如何在导入器中定义函数,以便在导入的模块内可见?我尝试了以下代码:
因此,
然而,这仍然失败了。
importer.py
文件如下:def build():
print "building"
build()
import imported
因此,
imported.py
简单地被导入。build()
然而,这仍然失败了。
building
Traceback (most recent call last):
File "C:\Users\valentin\Desktop\projects\maxim\miniGP\b01\evaluator\importer.py", line 6, in <module>
import imported
File "C:\Users\valentin\Desktop\projects\maxim\miniGP\b01\evaluator\imported.py", line 1, in <module>
build()
NameError: name 'build' is not defined
更新:在我得到关于循环导入的响应之后,以便导入和被导入彼此依赖,我感到需要澄清这并不总是好的。我的目的是在被导入的模块中指定一些常见策略。它将使用一些用户定义的函数,例如build
。用户定义所需的函数,并调用策略。关键是共享策略不能依赖于特定的用户定义。我认为,我需要像evaluate(imported.py)
这样的东西来代替import
,我相信这是任何脚本语言(包括Python)中的基本函数。irc://freenode/python 坚持要我使用import
,但我不明白如何做到这一点。
import
的作用,它会导入模块本身,从而产生副作用。(因此,如果foo.py
包含bar = 1 + 1
,并且你import foo
,那么你就可以访问foo.bar == 2
,因为foo.py
已经被执行了!) - Izkata