我有一个名为“package”的自定义包,该包中有一个名为“module”的自定义模块,它有一个在调用时返回“test”的函数。如果我这样做,当我导入我的包裹时:
from package import module
一切正常,但如果我这样做:
from package import *
或者
import package
然后,当尝试使用“模块”模块时,它会出现错误名称“模块”未定义。为什么在我使用 import * 或导入包时没有导入模块?
我试图调用的模块中的代码是这样的:
def printTest():
return("Test")
调用模块的文件中的代码是这样的:
import package
print(module.printTest())
原文由 BSmith156 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个令人惊讶的普遍问题,这个问题仍然没有正确的答案,所以我们开始吧。
假设我们有一个只有内部函数的模块,比如说:
我真的希望这能起作用(但它 不会):
事实证明,您必须显式导入每个元素或给
app.foo
一个名称:app.foo
一个(好听的)名字:即使上面的示例仅使用函数,它对于在模块最顶层范围内声明的所有内容(如类或变量)也完全相同。
希望能帮助到你!