【发布时间】:2022-01-03 17:37:36
【问题描述】:
我正在尝试理解 Python 装饰器。 从 FluentPython 书中尝试了这个示例。 (例7.2,供参考(
# Using Decorators
registry = []
def register(func):
print(f'running registry -> {func}')
registry.append(func)
@register
def f1():
print('running f1()')
@register
def f2():
print('running f2()')
@register
def f3():
print('running f3()')
def main():
print('running registry')
print(f'registry -> {registry}')
f1()
f2()
f3()
if __name__ == '__main__':
print('running main()')
main()
但是当我运行这个脚本时它给了我错误 > Traceback(最近一次通话最后一次): 文件“C:/Users/abcdef/Documents/FluentPython/NLP_C1_W1_lecture_nb_01.py”,第 3 行,在 例子.main() 文件“C:\Users\abcdef\Documents\FluentPython\Examples.py”,第 25 行,在 main f1() TypeError: 'NoneType' 对象不可调用
无法理解为什么会这样。 我只是使用 f1()、f2() 和 f3() 调用函数 - f1、f2 和 f3。我希望打印出 'running f1()' 等,但我得到了一个错误。
有人可以详细说明为什么会这样。谢谢。
【问题讨论】: