gpt4 book ai didi

python - python中的循环依赖

转载 作者:行者123 更新时间:2023-12-04 14:13:21 27 4
gpt4 key购买 nike

又看了几个关于stackoverflow的问题,还是不明白。

从另一个问题的例子中,我创建了 2 个简单的模块,它们相互调用以理解 python 中的循环导入,但这只会给我带来更多的困惑。

我有以下两个模块:

# module X.py

print('x1')
def X1():
return "x1"

from Y import Y2
print('x2')
def X2():
return "x2"
# module Y.py

print('y1')
def Y1():
return "y1"
from X import X1

print('y2')
def Y2():
return "y2"

当我运行 X.py 时发生错误:

x1
y1
x1
Traceback (most recent call last):
File "X.py", line 7, in <module>
from Y import Y2
File "***/Y.py", line 6, in <module>
from X import X1
File "***/X.py", line 7, in <module>
from Y import Y2
ImportError: cannot import name 'Y2' from 'Y' (***/Y.py)

当我运行 Y.py 时,没有错误发生,但我不明白打印的顺序。

y1
x1
y1
y2
x2
y2

我使用的是 python 3.8.3。

最佳答案

answer可能有助于实现导入过程。

我试图在下面的两种情况下显示导入时的步骤顺序。

当您运行 Y.py 时。顺序是:

  • __main__运行Y.py
  • def Y1() -> 在 __main__ 中定义 Y1()
  • from X import X1 -> 以X导入并运行X.py
  • def X1() -> 在X
  • 中定义 X1()
  • from Y import Y2 -> import and run Y.py as Y
  • def Y1() -> 在Y
  • 中定义 Y1()
  • 从 X 导入 X1 -> 确定X.X1 已定义
  • def Y2() -> 在Y
  • 中定义 Y2()
  • def X2() -> 在X
  • 中定义 X2()

当你运行 X.py 时,顺序是:

  • __main__运行X.py
  • def X1() -> 在 __main__ 中定义 X1()
  • from Y import Y2 -> import and run Y.py as Y
  • def Y1() -> 在Y
  • 中定义 Y1()
  • from X import X1 -> 以X导入并运行X.py
  • def X1() -> 在X
  • 中定义 X1()
  • 从 Y 导入 Y2 -> 错误Y.Y2 尚未定义

关于python - python中的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62605862/

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