sqming521 发表于 2020-4-4 14:03:45

关于修饰器语法糖的问题

def log(func):
    def wrapper():
      print('开始调用eat()')
      func()
      print('结束调用eat()')
    return wrapper
@log
def eat():
    print('开始吃了')

return的wrapper后面为什么加了()直接运行就会就会出结果?

qiuyouzhi 发表于 2020-4-4 14:07:40

因为这样返回的就是这个函数的调用结果。

zltzlt 发表于 2020-4-4 14:07:53

因为 wrapper() 会直接调用 wrapper,我们不希望它立刻调用

_荟桐_ 发表于 2020-4-4 17:34:07

后面不加()就是返回函数所在的内存地址
加了就是执行这个函数
页: [1]
查看完整版本: 关于修饰器语法糖的问题