gpt4 book ai didi

Python 模块导入行为

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:47 25 4
gpt4 key购买 nike

有人可以解释这种行为吗?

A.py:

import B
values = []

if __name__ == "__main__":
values.append('something')
print(values)
B.printValues()

B.py:

import A

def printValues():
print(A.values)

结果:

['something']
[]

我预计:

['something']
['something']

最佳答案

是这样的:

  1. A 导入 B。这会导致 B 中的代码被执行:
    1. A 被导入。因为这是第一次导入A(A不在sys.modules中),A<中的所有代码 被执行。
      1. import B 被执行。这不会执行B中的代码,因为B已经在sys.modules中。
      2. 已创建空列表 values
      3. if __name__=='__main__' block 执行,values 为空。
    2. B 现在有一个模块 A 的引用,与主模块不同。您可以通过添加 import __main__; 来确认这一点;打印 __main__ 是 AB。它将打印 False

关于Python 模块导入行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28050562/

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