python匯入模組交叉引用

2021-07-22 17:24:44 字數 672 閱讀 2225

實際專案中遇到python模組相互引用問題,查資料,終於算是弄明白了。

首先交叉引用或是相互引用,實際上就是匯入迴圈,關於匯入迴圈的詳細說明,可見我摘自《python核心程式設計》第二版的摘抄:

python匯入迴圈方法。

附錄給了一種解決交叉引用的方法,試了,不行,但關於交叉引用問題本身說明的很清楚,如果不清楚什麼是交叉引用,可看附錄一。

迴圈引用在python圈關注的並不多,語言上沒有提供防止迴圈依賴的機制。 

總的來說,應該在總體結構上避免模組之間互相依賴,即:a依賴b,b就不要依賴a,這也是**重構的乙個目標。 

對於緊急情況,往往來不及對**大動。 

只要找到導致迴圈引用的模組(最少兩個),把引用關係搞清楚,把某個模組讓它在真正需要的時候再匯入(一般放到函式裡面),或者放到**的最後匯入,這樣就可以基本解決模組迴圈依賴的問題。 

乙個小竅門: 

檢視迴圈引用的報錯棧時,會找到兩次匯入同乙個模組的檔案。注意在這個附近找。

總結:在python開發過程中,應盡量避免匯入迴圈(交叉引用),但是,如果你開發了大型的 python 工程, 那麼你很可能會陷入這樣的境地。

一些比較靠譜的方法是:

1. 把 import 語句放到方法定義的後面。

2. 將 import 語句移到函式的內部,只有在執行到這個模組時,才會匯入相關模組。

Python不同模組之間引用匯入

在使用python語言進行專案開發時難免會將不同功能進行模組劃分,但是個個功能模組之間又難免會有模組相互匯入引用。本文章主要是講解本人在使用python3進行開發過程中遇到的模組之間相互引用時遇到的問題,以下內容都是基於python3,1 首先建立基的目錄結構在這裡我建立了乙個父目錄parent,在...

python 匯入模組

最近開始學習python,遇到一些匯入模組的問題,花了幾分鐘終於琢磨明白了,給初學者介紹幾種型別 一 test sys test1 nv1.py nv2.py nv1.py 如下 classdog defadd self a,b self.a a self.b b c self.a self.b r...

python匯入模組

1 模組的定義 模組定義 用來邏輯上組織python 變數 函式 類 邏輯 目的是 實現乙個功能 本質就是.py結尾的python檔案。補充 包的定義 用來從邏輯組織模組的,本質就是乙個目錄 必須帶有乙個 init py檔案 2 匯入方法 匯入模組的方法 1.import module name 匯...