模块导入:名称错误:未定义名称

2024-05-21 05:18:24 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在导入程序中定义函数,以便在导入的内部可见?我试过这个

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。用户定义必要的函数并调用策略。关键是共享策略不能依赖于特定的用户定义。我相信我需要像import这样的东西来代替evaluate(imported.py),我相信这是任何脚本语言(包括Python)中的基本函数。irc://freenode/python坚持我必须使用import,但我不知道如何使用。


Tags: 函数用户pyimportbuild定义策略users
3条回答

进口商.py

def build():
   print("building")

build() #this extra call will print "building" once more.

导入.py

from importer import build
build()

请注意,importer.py和imported.py必须位于同一目录中。我希望这能解决你的问题

我知道这是亵渎神明,但允许导入模块而不将导入程序与导入程序绑定的东西在Python中很容易作为脚本语言使用。您始终可以使用execfile计算文件

导入不包括:它们是等幂的和should always be at the top of a module

不存在循环;一旦看到import foo,则import foo的其他实例将不再加载该模块。

您得到NameError是因为在imported.py的上下文中,没有名称build,它被称为importer.build()

我不知道你想用这么奇怪的代码做什么。

相关问题 更多 >