小白的自学python之路
def login(func): def inner(arg): print("passed user verification...") func(arg) return inner # @login def home(name): print("Welcome %s to home page" % (name)) @login def tv(name): print("Welcome %s to TV page" % (name)) # @login def move(name): print("Welcome %s to move page" % (name)) tv("aaa") # move("aaa") # home("aaa")
自学装饰器第一遍的时候怎么也想不明白,为什么只有在执行了tv函数之后才会执行inner函数,学了第二遍的时候,我自己都不明白我之前是在纠结个啥子,哈哈哈
做个笔记,防止自己又忘记了
1. @login 运行程序时就执行了login函数,但是此时并没有inner()所以并没有执行,return inner 将inner函数的内存地址赋值给了tv
2. tv("aaa") 这是实际是执行了inner函数,inner函数中又执行了传入的被装饰函数 def tv(name)
浙公网安备 33010602011771号