![]() |
1
239
关于这件事在 comp.lang.python 去年。它很彻底地回答了你的问题。
|
![]() |
2
231
如果你这样做了
问题是你什么时候做的
|
![]() |
3
94
循环导入将终止,但在模块初始化期间,请注意不要使用循环导入的模块。 考虑以下文件: A.PY:
B.PY:
如果执行a.py,将得到以下信息:
关于b.py的第二次导入(在第二次导入中
如果你试图进入
将以下行附加到
然后,输出为:
这是因为模块在导入时执行,
|
![]() |
4
25
正如其他答案所描述的,这种模式在Python中是可以接受的:
这将避免在其他模块导入文件时执行import语句。只有存在逻辑循环依赖关系时,此操作才会失败。
大多数循环导入实际上不是逻辑循环导入,而是提高
这些
考虑此循环导入: 应用程序A
应用程序B
大卫·比兹利的精彩演讲
Modules and Packages: Live and Let Die! - PyCon 2015
,
这将尝试导入
附:你必须用大卫·比兹利的声音读这整篇文章。 |
![]() |
5
8
我有一个让我震惊的例子! P.Py
巴利
Me.Py
在命令行: $python主.py
|
![]() |
6
4
我完全同意皮索纳的回答。但是我偶然发现了一些代码,这些代码有循环导入的缺陷,并且在尝试添加单元测试时引起了问题。因此,要在不更改任何内容的情况下快速修补它,您可以通过执行动态导入来解决问题。
同样,这不是一个永久性的修复,但可以帮助那些希望在不更改过多代码的情况下修复导入错误的人。 干杯! |
![]() |
7
1
循环导入可能会混淆,因为导入有两个功能:
前者只执行一次,而后者在每个import语句中执行。循环导入在导入模块使用部分执行代码的导入模块时创建情况。因此,它将看不到在import语句之后创建的对象。下面的代码示例演示了它。 循环进口并不是不惜一切代价避免的最终祸害。在一些框架中,比如flask,它们是非常自然的,调整代码以消除它们并不能使代码更好。 Me.Py
B.通过
A.Py
带注释的python main.py输出
|
![]() |
8
1
模块ApPy:
模块BY
运行“模块A”将输出:
它输出这3行,而由于循环导入,它应该输出无穷大。 在运行“模块A”时,逐行发生的情况如下:
|
![]() |
9
1
我用下面的方法解决了这个问题,它工作得很好,没有任何错误。
考虑两个文件
我把这个添加到
A.PY:
B.PY:
我得到的输出是
|
![]() |
10
-1
这可能是另一个解决方案,对我有效。
|
![]() |
11
-2
好吧,我想我有一个很酷的解决方案。
假设你有档案
这是因为您可以导入文件
例如: 文件A:
文件B:
沃伊拉 |
![]() |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
![]() |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
|
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
![]() |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
|
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
![]() |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |