python - 如何理解python中的导入?
问题描述
我有a.py
和b.py
在同一个目录中。在 a.py 中,代码是
A = 'a1'
from b import B
print(B)
在 b.py 中,代码是
B = 'b1'
from a import A
print(A)
现在运行a.py,结果是
b1
a1
b1
我不明白。有人会解释吗?谢谢!
解决方案
这个问题似乎集中在执行顺序上。这与循环导入相结合。
循环规则在链接的答案中说明,我不同意是重复的:
- 如果尚未导入模块,请执行它。
- 否则,无论其原始导入是否完成,都直接返回。
现在,执行顺序:
- 跑
A
A
importb
,它不存在,所以被执行。B
importsB
,它不存在(作为导入)并被执行。- 一个新的
A
运行。这一次 whenB
被导入,它已经存在并返回。幸运的是,我们已经声明了b1
. 例如,如果我们在 import 语句之后更改它,事情会变得很奇怪。如果我们在导入后首先声明它,事情就会崩溃。 A
完成其运行。B
完成其运行。- 初始的 a 完成了它的运行。
这就是您得到的打印语句的顺序。重要的是要注意这里的执行是完全线性的。
推荐阅读
- javascript - 当 csrf 设置为 auto 时,如何使用带有 codeigniter 4 的 jquery 验证库检查现有数据?
- r - 如何将自由文本条目作为图例添加到 ggplot?
- ssis - 优先约束在SSIS中评估为真(或假)是什么意思
- python - 分解python中的列表理解
- mysql - mySQL 删除唯一键约束
- firebase - 如何以相反的顺序从 Firebase 数据库添加数据?
- d3.js - 将 y 轴水平线添加到 D3 散点图
- swift - 带有扩展部分的 Swift UITableView,在选定的新部分上强制关闭已打开的部分
- list - Swiftui 移除滑动删除功能
- android - 依次运行两个倒数计时器