在导入的一个中调用importing(!)python源的函数

时间:2019-06-06 15:04:12

标签: python

假设我有一些 main.py

def sauce():
    print "This is the secret"

from included import magic
magic()

included.py

def magic():
    sauce()

这应该打印这是秘密,但是它当然会引发错误。

通常需要的东西反之亦然。但是有一些秘诀可以实现我想要的吗?

1 个答案:

答案 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参数,而不是依赖某人为其未定义的全局引用提供定义。