假设我有一些 main.py
def sauce():
print "This is the secret"
from included import magic
magic()
和 included.py
def magic():
sauce()
这应该打印这是秘密,但是它当然会引发错误。
通常需要的东西反之亦然。但是有一些秘诀可以实现我想要的吗?
答案 0 :(得分:1)
Python具有词法作用域; sauce
的定义中的名称magic
指的是included
(定义了magic
的全局范围内的名称,而不是{{1} }恰好被调用。
证明是这样的(并且不是建议以这种方式编写代码):
magic
一个更好的选择是让import included
from included import magic
def sauce_implementation():
print "This is the secret"
included.sauce = sauce_implementation # Patch the global scope of included
magic()
接受一个magic
参数,而不是依赖某人为其未定义的全局引用提供定义。