gpt4 book ai didi

python - 导入模块时的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-03 11:32:36 26 4
gpt4 key购买 nike

我有一个名为“package”的 Python 包。我在其中有空的 __init__.py 和两个模块。一个叫做 m1.py,只包含一行:

x = 3

另一个名为 m2.py 并包含以下行:

x = 5

现在我尝试使用那个模块。首先,我会做类似的事情:

from package.m1 import x
print package.m1.x

当然它不起作用 - 我收到这样的错误:

NameError: name 'package' is not defined

我明白为什么它不起作用。但后来我做了类似的事情:

from package.m1 import x
import package.m2
print package.m1.x

现在它确实起作用了。为什么?如何?我没有导入 package.m1!

最佳答案

对此我只有一个解释:

  1. from package.m1 import x 加载模块 packagepackage.m1m1 已添加到 package 模块,但 package 未添加到您的全局变量。
  2. import package.m2 现在将 package 模块添加到您的全局变量中。由于 m1 已经是 package 的一部分,现在可以通过 package.m1 访问它。

进一步测试:

>>> from package import m1
>>> package.m1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'package' is not defined
>>> import package.m2
>>> package.m1
<module 'package.m1' from 'package/m1.py'>
>>> from package import m3
>>> package.m3
<module 'package.m3' from 'package/m3.py'>

继续测试:

>>> import package.m1
>>> del package
>>> import package
>>> package.m1
<module 'package.m1' from 'package/m1.py'>

关于python - 导入模块时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com