return:它是函数执行结果的返回值,并终止其以下的代码的执行,只能用在函数体内。
python装饰器:在不改变源代码和调用方式的基础上给函数增加新的功能。
def deco(func): #func=test
def wrapper():
func() #func=test
print('追加部分‘)
return wrapper
def test():
print('原始部分')
@deco #test = deco(test)
#test = wrapper
test() #test() = wrapper()
如图,在不改变函数test()的源代码和调用方式的基础上追加一行内容,此时用到了装饰器
运行结果为:
原始部分
追加部分
@deco 将test作为实参导入到函数deco(func)中,
其返回值为wrapper
即test = wrapper
即test() = wrapper()
所以此时调用函数test()即调用wrapper()
形参func被赋值为test,所以在执行wrapper()时:
1.先执行:
def test():
print('原始部分')
2.再执行:
print('原始部分')
得到的结果就是:
原始部分
追加部分
注:return在函数体中只做了返回值wrapper一件事,return与def wrapper() 他们是同级关系,return并不会闭合函数,所以它不会影响wrapper的运行