小白的自学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)