最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在 Jupyter 中重新導(dǎo)入特定的 Python 文件(場(chǎng)景分析)

 更新時(shí)間:2019年10月27日 14:33:15   作者:青南  
Jupyter 是數(shù)據(jù)分析領(lǐng)域非常有名的開發(fā)環(huán)境,使用 Jupyter 寫數(shù)據(jù)分析相關(guān)的代碼會(huì)大大節(jié)約開發(fā)時(shí)間。這篇文章主要介紹了在 Jupyter 中如何重新導(dǎo)入特定的 Python 文件,需要的朋友可以參考下

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

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

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

from analyze import FathersAnalyzer

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

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

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

那么現(xiàn)在問(wèn)題來(lái)了,如果我此時(shí)修改了 analyze.py 文件,會(huì)出現(xiàn)什么情況呢?

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

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

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

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

importlib

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

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

使用 Jupyter 自帶的 %autoreload :

%load_ext autoreload
%autoreload 1
%aimport analyze 

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

運(yùn)行效果如下圖所示:

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

%load_ext autoreload
%autoreload 1
%aimport analyze 

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

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

當(dāng)然,你還可以進(jìn)一步偷懶,把特殊代碼縮減為2行:

%load_ext autoreload
%autoreload 2

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

總結(jié)

以上所述是小編給大家介紹的在 Jupyter 中重新導(dǎo)入特定的 Python 文件的方法,希望對(duì)大家有所幫助!

相關(guān)文章

  • python如何將數(shù)據(jù)輸出到文件中

    python如何將數(shù)據(jù)輸出到文件中

    這篇文章主要介紹了python如何將數(shù)據(jù)輸出到文件中問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Python函數(shù)使用的相關(guān)練習(xí)題分享

    Python函數(shù)使用的相關(guān)練習(xí)題分享

    這篇文章主要介紹了Python函數(shù)使用的相關(guān)練習(xí)題分享,文章基于python函數(shù)內(nèi)容展開其相關(guān)例題,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Pycharm使用爬蟲時(shí)遇到etree紅線問(wèn)題及解決

    Pycharm使用爬蟲時(shí)遇到etree紅線問(wèn)題及解決

    這篇文章主要介紹了Pycharm使用爬蟲時(shí)遇到etree紅線問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python標(biāo)準(zhǔn)庫(kù)中的logging用法示例詳解

    Python標(biāo)準(zhǔn)庫(kù)中的logging用法示例詳解

    logging是Python標(biāo)準(zhǔn)庫(kù)中記錄常用的記錄日志庫(kù),通過(guò)logging模塊存儲(chǔ)各種格式的日志,主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級(jí)、日志保存路徑、日志文件回滾等,這篇文章主要介紹了Python標(biāo)準(zhǔn)庫(kù)中的logging,需要的朋友可以參考下
    2022-09-09
  • Pytorch之卷積層的使用詳解

    Pytorch之卷積層的使用詳解

    今天小編就為大家分享一篇Pytorch之卷積層的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 利用Python創(chuàng)建第一個(gè)Django框架程序

    利用Python創(chuàng)建第一個(gè)Django框架程序

    這篇文章主要介紹了利用Python創(chuàng)建第一個(gè)Django框架程序,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06
  • python 中的list和array的不同之處及轉(zhuǎn)換問(wèn)題

    python 中的list和array的不同之處及轉(zhuǎn)換問(wèn)題

    python中的list是python的內(nèi)置數(shù)據(jù)類型,list中的數(shù)據(jù)類不必相同的,而array的中的類型必須全部相同。這篇文章給大家介紹了python 中的list和array的不同之處及轉(zhuǎn)換問(wèn)題,需要的朋友參考下吧
    2018-03-03
  • python中的垃圾回收(GC)機(jī)制

    python中的垃圾回收(GC)機(jī)制

    這篇文章主要介紹了python中的GC機(jī)制,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • 關(guān)于Python的Thread線程模塊詳解

    關(guān)于Python的Thread線程模塊詳解

    這篇文章主要介紹了關(guān)于Python的Thread線程模塊詳解,進(jìn)程是程序的一次執(zhí)行,每個(gè)進(jìn)程都有自己的地址空間、內(nèi)存、數(shù)據(jù)棧以及其他記錄其運(yùn)行的輔助數(shù)據(jù),需要的朋友可以參考下
    2023-05-05
  • 利用python調(diào)用攝像頭的實(shí)例分析

    利用python調(diào)用攝像頭的實(shí)例分析

    在本篇文章里小編給大家整理了一篇關(guān)于利用python調(diào)用攝像頭的實(shí)例分析內(nèi)容,有需要的朋友們跟著參考下。
    2021-06-06

最新評(píng)論

双鸭山市| 江津市| 兴山县| 汾西县| 迭部县| 重庆市| 盘锦市| 华宁县| 阳谷县| 洛隆县| 六安市| 昌宁县| 平谷区| 新河县| 葫芦岛市| 武隆县| 焉耆| 新民市| 永康市| 海伦市| 长岭县| 和平区| 阜新| 遵化市| 体育| 文成县| 时尚| 金湖县| 津南区| 洱源县| 铜川市| 安阳市| 南和县| 贞丰县| 缙云县| 荔波县| 建阳市| 玛沁县| 靖西县| 监利县| 阿勒泰市|