python導(dǎo)入模塊交叉引用的方法
實(shí)際項(xiàng)目中遇到python模塊相互引用問(wèn)題,查資料,終于算是弄明白了。
首先交叉引用或是相互引用,實(shí)際上就是導(dǎo)入循環(huán),關(guān)于導(dǎo)入循環(huán)的詳細(xì)說(shuō)明,可見我摘自《python核心編程》第二版的摘抄:Python導(dǎo)入循環(huán)方法。
附錄給了一種解決交叉引用的方法,試了,不行,但關(guān)于交叉引用問(wèn)題本身說(shuō)明的很清楚,如果不清楚什么是交叉引用,可看附錄一。
循環(huán)引用在python圈關(guān)注的并不多,語(yǔ)言上沒有提供防止循環(huán)依賴的機(jī)制。
總的來(lái)說(shuō),應(yīng)該在總體結(jié)構(gòu)上避免模塊之間互相依賴,即:A依賴B,B就不要依賴A,這也是代碼重構(gòu)的一個(gè)目標(biāo)。
對(duì)于緊急情況,往往來(lái)不及對(duì)代碼大動(dòng)。
只要找到導(dǎo)致循環(huán)引用的模塊(最少兩個(gè)),把引用關(guān)系搞清楚,把某個(gè)模塊讓它在真正需要的時(shí)候再導(dǎo)入(一般放到函數(shù)里面),或者放到代碼的最后導(dǎo)入,這樣就可以基本解決模塊循環(huán)依賴的問(wèn)題。
一個(gè)小竅門:
查看循環(huán)引用的報(bào)錯(cuò)棧時(shí),會(huì)找到兩次導(dǎo)入同一個(gè)模塊的文件。注意在這個(gè)附近找。
總結(jié):
在python開發(fā)過(guò)程中,應(yīng)盡量避免導(dǎo)入循環(huán)(交叉引用),但是,如果你開發(fā)了大型的 Python 工程, 那么你很可能會(huì)陷入這樣的境地。
一些比較靠譜的方法是:
1. 把 import 語(yǔ)句放到方法定義的后面。
2. 將 import 語(yǔ)句移到函數(shù)的內(nèi)部,只有在執(zhí)行到這個(gè)模塊時(shí),才會(huì)導(dǎo)入相關(guān)模塊。
以上這篇python導(dǎo)入模塊交叉引用的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
深入分析在Python模塊頂層運(yùn)行的代碼引起的一個(gè)Bug
幾個(gè)星期前, 我的同事跑過(guò)來(lái), 說(shuō)發(fā)現(xiàn)一個(gè)奇怪的Bug: 在使用Python的subprocess運(yùn)行子進(jìn)程時(shí), 當(dāng)子進(jìn)程運(yùn)行失敗時(shí)居然沒有拋出錯(cuò)誤!2014-07-07
淺談Django中view對(duì)數(shù)據(jù)庫(kù)的調(diào)用方法
今天小編就為大家分享一篇淺談Django中view對(duì)數(shù)據(jù)庫(kù)的調(diào)用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
python實(shí)現(xiàn)自動(dòng)搶課腳本的示例代碼
本文主要介紹了python實(shí)現(xiàn)自動(dòng)搶課腳本的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Python3加密解密庫(kù)Crypto的RSA加解密和簽名/驗(yàn)簽實(shí)現(xiàn)方法實(shí)例
這篇文章主要介紹了Python3加密解密庫(kù)Crypto的RSA加解密和簽名/驗(yàn)簽實(shí)現(xiàn)方法實(shí)例,需要的朋友可以參考下2020-02-02
Python json 錯(cuò)誤xx is not JSON serializable解決辦法
這篇文章主要介紹了Python json 錯(cuò)誤xx is not JSON serializable解決辦法的相關(guān)資料,需要的朋友可以參考下2017-03-03
Python異步編程之協(xié)程任務(wù)的調(diào)度操作實(shí)例分析
這篇文章主要介紹了Python異步編程之協(xié)程任務(wù)的調(diào)度操作,結(jié)合實(shí)例形式分析了Python異步編程中協(xié)程任務(wù)的調(diào)度相關(guān)原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
YOLOv5在圖片上顯示統(tǒng)計(jì)出單一檢測(cè)目標(biāo)的個(gè)數(shù)實(shí)例代碼
各位讀者首先要認(rèn)識(shí)到的問(wèn)題是,在YOLOv5中完成錨框計(jì)數(shù)是一件非常簡(jiǎn)單的工作,下面這篇文章主要給大家介紹了關(guān)于YOLOv5如何在圖片上顯示統(tǒng)計(jì)出單一檢測(cè)目標(biāo)的個(gè)數(shù)的相關(guān)資料,需要的朋友可以參考下2023-03-03
利用Python2下載單張圖片與爬取網(wǎng)頁(yè)圖片實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于利用Python2下載單張圖片與爬取網(wǎng)頁(yè)圖片的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12

