奇怪的Python导入行为
我已经在下面看了很长一段时间了,没有弄清楚到底发生了什么 我正在使用一个现有的Python项目,我有一个如下(简化)的目录结构: 我在奇怪的Python导入行为,python,python-import,Python,Python Import,我已经在下面看了很长一段时间了,没有弄清楚到底发生了什么 我正在使用一个现有的Python项目,我有一个如下(简化)的目录结构: 我在函数模块的\uuuu init\uuuu.py文件中有以下代码(除其他代码外,在函数中): 奇怪的是,在下面的几行中,使用了名称test,Python并不抱怨它,即使在任何地方都没有导入test 我在上面两行之前和之后放了一些诊断消息,我看到globals()通过test模块更新 请注意,测试的初始化为空 这到底是怎么回事?导入系统加载函数.test.file1时
函数
模块的\uuuu init\uuuu.py
文件中有以下代码(除其他代码外,在函数中):
奇怪的是,在下面的几行中,使用了名称test
,Python并不抱怨它,即使在任何地方都没有导入test
我在上面两行之前和之后放了一些诊断消息,我看到globals()
通过test
模块更新
请注意,测试
的初始化
为空
这到底是怎么回事?导入系统加载
函数.test.file1
时,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
行为是否有可能发生某种变化,导致导入函数.test.fileX
时导入名称,它需要设置属性链,使表达式函数.test.file1
不产生AttributeError。也就是说
__import__('functions.test.file1')
有副作用吗
functions.test = <the test module object>
functions.test.file1 = <the file1 module object>
functions.test=
functions.test.file1=
由于函数
包的初始化
使用函数
包的属性作为其全局变量,因此名称测试的全局变量查找现在可以找到函数。测试
非常感谢!这就解释了为什么会发生这种情况。尤其是最后一句。干杯
__import__('functions.test.file1')
functions.test = <the test module object>
functions.test.file1 = <the file1 module object>