1.函数可以作为参数进行传递
2.函数可以作为返回值进行返回
3.函数名称可以当成变量一样进行赋值操作
#1.函数可以作为参数进行传递
def force_fn(fn): #其中参数fn为函数
fn() #执行此函数
#2.函数可以作为返回值进行返回
def func():
def inner():
print('123')
return inner
ret = func() #其中ret为函数inner
ret() #执行ret函数
#3.函数名称可以当成变量一样进行赋值操作
def func1():
print('函数1')
def func():
print('函数2')
func1 = func2
func1() #此时输出 函数2
作用:在不改变原有函数调用的情况下,给函数增加新的功能
即可以在函数前面增加新的功能,但不改变原来的代码
#通用装饰器的写法:
def wrapper(fn): #wrapper:装饰器, fn:目标函数
def inner(*args,**kwargs):
#在目标函数执行之前添加代码...
ret = fn(*args,**kwargs) #执行目标函数
#在目标函数执行之后添加代码...
return ret
return inner
#使用装饰器
@wrapper
def target():
pass
注:一个函数可以使用多个装饰器
@wrapper1
@wrapper2
def target():
pass
执行顺序(嵌套规则): wrapper1 wrapper2 target wrapper1 wrapper2