doraemon的python 函数与装饰器(哎呀,忘记传了)
Posted doraemon548542
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了doraemon的python 函数与装饰器(哎呀,忘记传了)相关的知识,希望对你有一定的参考价值。
5.10 函数中高级
5.10.1 函数可以当做返回值
def func():
print(123)
def bar():
return func
?
v = bar()
?
v()
5.10.2 闭包
def func(name):
def innner():
print(name)
return inner
?
v1 = func(‘liujia‘)
v1()
v2 = func(‘eric‘)
v2()
总结:
-
函数执行的流程分析(函数式谁创建的)
-
闭包概念:为函数创建一块区域并为其维护自己数据,以后执行时候方便调用
5.10.3 高阶函数
-
将函数当做参数传递
-
把函数当做返回值
注意:对函数进行赋值
def func():
print(123)
def bar(a):
return a
?
v1 = bar(func)
v1()
5.11 装饰器
#装饰器的编写
def func(arg):
def inner(*args,**kwargs)
#需要添加的操作
ret = arg(*args,**kwargs)
#需要添加的操作
return ret
return inner
?
#装饰器编写格式
def 外层函数(参数):
def 内层函数(*args,*kwargs)
return 参数(*args,**kwargs)
return 内层函数
?
5.12 推导式
-
列表的推导式
-
基本格式
-
#目的:方便生成一个列表
?
v1 = [i for i in range(10)]
v2 = [ i+100 for i in range(10)]
v3 = [99 if i>5 else 66 for i in range(10)]
v4 = [lambda : 100 for i in range(10)]
v5 = [lambda : 1 for i in range(10)]
?
?
v8 = [lambda x:x*i for i in range(10)] # 新浪微博面试题
# 1.请问 v8 是什么?
# 2.请问 v8[0](2) 的结果是什么?
?
def num():
return [lambda x:i*x for i in range(4)]
# num() -> [函数,函数,函数,函数]
print([ m(2) for m in num() ]) # [6,6,6,6]
-
集合推导式
v1 = i for i in ‘alex‘
-
字典推导式
v1 = ‘k‘+str‘i‘:i for i in range(10)
以上是关于doraemon的python 函数与装饰器(哎呀,忘记传了)的主要内容,如果未能解决你的问题,请参考以下文章