欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何在Jupyter中重新導(dǎo)入特定的Python文件-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“如何在Jupyter中重新導(dǎo)入特定的Python文件”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何在Jupyter中重新導(dǎo)入特定的Python文件”這篇文章吧。

創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鐵東企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站建設(shè),鐵東網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

Jupyter 是數(shù)據(jù)分析領(lǐng)域非常有名的開發(fā)環(huán)境,使用 Jupyter 寫數(shù)據(jù)分析相關(guān)的代碼會大大節(jié)約開發(fā)時間。

設(shè)想這樣一個場景:別的部門的同事傳給你一個數(shù)據(jù)分析的模塊,用于實現(xiàn)對數(shù)據(jù)的高級分析。模塊里面有上百個函數(shù)。

如果直接寫 Python 文件來調(diào)用數(shù)據(jù)分析模塊,那么使用方法非常簡單:

from analyze import FathersAnalyzer

data = [...]
father = FathersAnalyzer(data)
result = father.analyze()
print(f'分析結(jié)果為:{result}')

現(xiàn)在,你需要使用 Jupyter 來調(diào)用這個分析模塊。你應(yīng)該怎么在 Jupyter里面調(diào)用?

你可能會覺得,這還不簡單嗎?直接把這個模塊的代碼與 Jupyter Notebook 的 .ipynb 文件放在一起,然后在 Jupyter 里面像導(dǎo)入普通模塊那樣導(dǎo)入即可,如下圖所示:

如何在Jupyter中重新導(dǎo)入特定的Python文件

那么現(xiàn)在問題來了,如果我此時修改了 analyze.py 文件,會出現(xiàn)什么情況呢?

我們改一下看看,如下圖所示。

如何在Jupyter中重新導(dǎo)入特定的Python文件

重新運行這個 Cell 中的代碼,代碼中雖然有 from analyze import FathersAnalyzer ,看起來像是重新導(dǎo)入了這個模塊,但是運行卻發(fā)現(xiàn),它運行的是修改之前的代碼。

這是因為,一個 Jupyter Notebook 中的所有代碼,都是在同一個運行時中運行的代碼,當你多次導(dǎo)入同一個模塊時,Python 的包管理機制會自動忽略后面的導(dǎo)入,始終只使用第一次導(dǎo)入的結(jié)果(所以使用這種方式也可以實現(xiàn)單例模式)。

那么如果我在修改了被導(dǎo)入的包以后,想重新導(dǎo)入它怎么辦呢?有3種方案:

importlib

如何在Jupyter中重新導(dǎo)入特定的Python文件

但這種方案弊端也很明顯——除非你按順序運行每一個 Cell,否則,你的代碼會變成下圖這樣:

如何在Jupyter中重新導(dǎo)入特定的Python文件

在每一個 Cell 里面都需要 重新加載一次分析模塊,否則,很有可能在你單獨運行某一個 Cell 的時候,用的是老的代碼,就會導(dǎo)致難以察覺的 bug。

使用 Jupyter 自帶的 %autoreload :

%load_ext autoreload
%autoreload 1
%aimport analyze 

data = 123
importlib.reload(analyze)
father = analyze.FathersAnalyzer(data)
result = father.analyze()
print(result)

運行效果如下圖所示:

如何在Jupyter中重新導(dǎo)入特定的Python文件

其中關(guān)鍵的代碼有三行:

%load_ext autoreload
%autoreload 1
%aimport analyze

這三行代碼只有在 Jupyter 里面才能正常運行,在 普通的.py 文件里面這樣寫會報錯。它們的作用是:第1行啟動 autoreload 機制。第2行,設(shè)置自動加載通過 %aimport 導(dǎo)入的模塊。第3行使用 %aimport 導(dǎo)入 analyze 模塊。

這樣寫以后,任意一個 Cell 運行,所有被 %aimport 導(dǎo)入的模塊都會被重新加載一次。從而讓你每次都使用最新的代碼。

當然,你還可以進一步偷懶,把特殊代碼縮減為2行:

%load_ext autoreload
%autoreload 2

%autoreload 后面的參數(shù)被設(shè)置為2時,每次運行任意一個 Cell,都會自動重新加載所有 import xxx 導(dǎo)入的模塊。這樣做的代價是,運行會慢一些。

以上是“如何在Jupyter中重新導(dǎo)入特定的Python文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

標題名稱:如何在Jupyter中重新導(dǎo)入特定的Python文件-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://www.chinadenli.net/article14/dccdge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)微信公眾號網(wǎng)站改版軟件開發(fā)網(wǎng)站設(shè)計動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)