python導入模塊交叉引用的方法
實際項目中遇到python模塊相互引用問題,查資料,終于算是弄明白了。
首先交叉引用或是相互引用,實際上就是導入循環(huán),關于導入循環(huán)的詳細說明,可見我摘自《python核心編程》第二版的摘抄:Python導入循環(huán)方法。
附錄給了一種解決交叉引用的方法,試了,不行,但關于交叉引用問題本身說明的很清楚,如果不清楚什么是交叉引用,可看附錄一。
循環(huán)引用在python圈關注的并不多,語言上沒有提供防止循環(huán)依賴的機制。
總的來說,應該在總體結構上避免模塊之間互相依賴,即:A依賴B,B就不要依賴A,這也是代碼重構的一個目標。
對于緊急情況,往往來不及對代碼大動。
只要找到導致循環(huán)引用的模塊(最少兩個),把引用關系搞清楚,把某個模塊讓它在真正需要的時候再導入(一般放到函數(shù)里面),或者放到代碼的最后導入,這樣就可以基本解決模塊循環(huán)依賴的問題。
一個小竅門:
查看循環(huán)引用的報錯棧時,會找到兩次導入同一個模塊的文件。注意在這個附近找。
總結:
在python開發(fā)過程中,應盡量避免導入循環(huán)(交叉引用),但是,如果你開發(fā)了大型的 Python 工程, 那么你很可能會陷入這樣的境地。
一些比較靠譜的方法是:
1. 把 import 語句放到方法定義的后面。
2. 將 import 語句移到函數(shù)的內(nèi)部,只有在執(zhí)行到這個模塊時,才會導入相關模塊。
以上這篇python導入模塊交叉引用的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python+Pygame實戰(zhàn)之24點游戲的實現(xiàn)
這篇文章主要為大家詳細介紹了如何利用Python和Pygame實現(xiàn)24點小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04Python實現(xiàn)以主程序的形式執(zhí)行模塊
這篇文章主要介紹了Python實現(xiàn)以主程序的形式執(zhí)行模塊,首先創(chuàng)建一個以christmastree的命名的模塊并定義一個全局變量創(chuàng)建一個名稱為fun_christmastree()的函數(shù)展開詳情,感興趣的朋友可以參考一下2022-06-06Python+Flask實現(xiàn)自定義分頁的示例代碼
分頁操作在web開發(fā)中幾乎是必不可少的,而flask不像django自帶封裝好的分頁操作。所以本文將自定義實現(xiàn)分頁效果,需要的可以參考一下2022-09-09Python+Selenium自動化實現(xiàn)分頁(pagination)處理
這篇文章主要為大家詳細介紹了Python+Selenium自動化實現(xiàn)分頁pagination處理的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03pandas刪除部分數(shù)據(jù)后重新生成索引的實現(xiàn)
這篇文章主要介紹了pandas刪除部分數(shù)據(jù)后重新生成索引的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07