python 循環導入的問題

循環導入的問題

1、什麼是循環導入?

就像下圖同樣是一個循環的過程,只要開始就沒有結束。函數

#m1.py

print('from m1.py')
from m2 import x

y = 'm1'
  1. 建立m2的名稱空間
  2. 執行m2.py,將執行產生的名字丟到m2.py
  3. 在當前執行文件中拿到m2.x
#m2.py
print('from m2.py')
from m1 import y
x = 'm2'
  1. 建立m1的名稱空間
  2. 執行m1.py,將執行產生的名字丟到m1.py
  3. 在當前執行文件中拿到m1.py
# run.py
import m1
  1. 建立m1的名稱空間
  2. 執行m1.py,將執行產生的名字丟到m1.py
  3. 在當前執行文件拿到m1
  • 不管運行run.py,m1.py或者m2.py都會報錯

2、解決方案

上面說的問題就是循環導入的問題code

咱們可使用函數定義階段只識別語法的特性解決循環導入的問題,咱們也能夠從本質上解決循環導入的問題,單身最好的解決方法是不要出現循環導入的問題。blog

2.1方案一

# m1.py
print('from m1.py')


def func1():
    from m2 import x
    print(x)



y = 'm1'
func1()
#m2.py
print('from m2.py')
def func1():
    from m1 import y
    print(y)


x = 'm2'
func1()

2.2 方法二

#m1.py

print('from m1.py')
y = 'm1'

from m2 import x
#m1.py

print('from m1.py')
y = 'm1'

from m2 import x
相關文章
相關標籤/搜索