【问题标题】:why isnt line "print("guys listen")" not working?为什么行“打印(”伙计们听“)”不起作用?
【发布时间】:2020-06-01 12:07:04
【问题描述】:
def amn(func):
    def inner():
        print("guys listen")
    func()
    return inner

@amn
def damn():
    print("hey")

amn 是一个装饰器。函数 inner() 应该在 amn 执行时被调用。但是由于某种原因,它不起作用

【问题讨论】:

    标签: python decorator


    【解决方案1】:
    @amn
    def foo():
        pass
    

    是一样的

    def foo():
        pass
    
    foo = amn(foo)
    

    您的amn 将原来的damn 调用为func(),然后@ 运算符将amn 的返回值赋回damn,使其成为inner

    您不应在amn 的外部调用func,而应作为inner 的一部分。你也应该看看functools.wraps

    【讨论】:

    • 当我在 inner() 中添加 func() 时,它不会打印任何内容。我知道amn是做什么的。就卡在这里了。
    • 把 func() 放在内部。然后在你装饰完之后在模块级别调用damn,看看会发生什么。
    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 2018-02-10
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多