三个文件:
user1.py:
import user2,user3
print(user2.name)
user2.py:
name="user2"
user3.py:
import user2
user2.name = "user3"
执行user1.py,输出什么
1、user1.py 导入 user2 和 user3:
当 user1.py 执行 import user2, user3 时,Python 会依次导入这两个模块。
user2 模块被导入,user2.name 被初始化为 "user2"。
接着,user3 模块被导入。在 user3.py 中,user3 导入 user2 并修改了 user2.name 的值为 "user3"。
user1.py 打印 user2.name:
在 user1.py 中,print(user2.name) 将输出修改后的值 "user3"。
2、user1.py 导入 user3 和 user2:
当 user1.py 执行 import user3, user2 时,Python 会依次导入这两个模块。
user3 模块被导入时,它会尝试导入 user2 模块。由于 user2 尚未被导入,Python 会先加载 user2 模块。
user2 模块的 name 变量被初始化为 "user2"。
然后,user3 模块的代码被执行,它会尝试修改 user2.name 的值为 "user3"。但由于此时 user2 模块的 name 变量已经被初始化,user3 的修改会覆盖原来的值。
接着,user2 模块被再次导入(但由于模块已经加载,Python 不会重新执行模块代码),所以 user2.name 保持为 "user3"。
user1.py 打印 user2.name:
在 user1.py 中,print(user2.name) 将输出 "user3"。