在哪里包装函数

问题描述 投票:0回答:1

对于包装函数,为什么以下方法不起作用:

# 3. DISALLOW EXECUTION IN MAIN
def disallow_main(func):
    if __name__ == '__main__':
        raise RuntimeError("Cannot run from main.")
    return func

@disallow_main
def echo(prompt='-> '):
    _inp = input(prompt)
    print ("ECHO: %s" % _inp)

也就是说,为什么在定义函数之前将其引发?包装应该如何正确构造?

python wrapper python-decorators
1个回答
1
投票

如评论中所述,这解释了为什么在进行检查时会进行检查,但仍然没有执行您想要的操作。此检查仅检查包含disallow_main的模块是否为__main__;否则,将仅检查该模块。如果呼叫代码是__main__,则不行。您需要进行更复杂的检查才能准确执行您要执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.