对于包装函数,为什么以下方法不起作用:
# 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)
也就是说,为什么在定义函数之前将其引发?包装应该如何正确构造?
如评论中所述,这解释了为什么在进行检查时会进行检查,但仍然没有执行您想要的操作。此检查仅检查包含disallow_main
的模块是否为__main__
;否则,将仅检查该模块。如果呼叫代码是__main__
,则不行。您需要进行更复杂的检查才能准确执行您要执行的操作。