python 循環導入

記錄前段時間學習 Flask 時遇到的循環導入問題python

何爲循環導入?

栗子很簡單, 如今有a.py, b.py, c.py 三個包, b.py 中導入 a.py, c.py 中導入 b.py , a.py 中導入c.py, 而後隨便以一個文件爲入口執行程序編程

假如以 a.py 做爲程序入口, 大概就像下面這樣函數

import c

def test():
    print('this a')

c.test()

如今執行a.py 就會報出導入錯誤(相似下面這個), 詳細介紹在 core-python (python 核心編程) 中有介紹, 有時間能夠看一下學習

ImportError: cannot import name XX

重點是, 怎麼解決

  1. (直接最實在的方法) 將產生循環的包, 放在函數裏進行調用, 好比剛纔的 a.py 能夠改爲這樣this

    def test():
    print('this a')
    
    def run():
    import c
    c.test()
  2. 若是瞭解程序的執行順序的話, 也能夠使用調整 import 順序的方法解決, 可是我嘗試的結果是: 這並不能100% 的解決問題code

  3. (終極解決方案) 要不仍是重構吧 (逃..)class

相關文章
相關標籤/搜索