两个嵌套函数组成闭包用来作为装饰器,闭包第一层只能传函数名,没有传递参数的位置,
所以最外层的函数的作用是将参数作为局部变量传递给闭包,然后就可以在闭包中使用参数了。
def get_parameter(*args, **kwargs): #工厂函数,用来接收@get_parameter((1, 2), {"a": "1"})传递的参数(1, 2), {"a": "1"}
def funOut(func): #两个嵌套函数组成的闭包用来作为装饰器
def funIn():
print(*args, **kwargs)
print("现在开始装饰")
func()
print("装饰结束")
return funIn
return funOut
@get_parameter((1, 2), {"a": "1"})
def works():
print("我是被装饰的函数")
结果:
(1, 2) {'a': '1'}
现在开始装饰
我是被装饰的函数
装饰结束
网友评论