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

python 模塊重載的五種方法

 更新時(shí)間:2021年04月23日 16:53:43   作者:寫代碼的明哥  
這篇文章主要介紹了python 模塊重載的五種方法,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下

環(huán)境準(zhǔn)備

新建一個(gè) foo 文件夾,其下包含一個(gè) bar.py 文件

$ tree foo
foo
└── bar.py

0 directories, 1 file

bar.py 的內(nèi)容非常簡(jiǎn)單,只寫了個(gè) print 語(yǔ)句

print("successful to be imported")

只要 bar.py 被導(dǎo)入一次,就被執(zhí)行一次 print

禁止重復(fù)導(dǎo)入

由于有 sys.modules 的存在,當(dāng)你導(dǎo)入一個(gè)已導(dǎo)入的模塊時(shí),實(shí)際上是沒(méi)有效果的。

>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>

重載模塊方法一

如果你使用的 python2(記得前面在 foo 文件夾下加一個(gè) __init__.py),有一個(gè) reload 的方法可以直接使用

>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> reload(bar)
successful to be imported
<module 'foo.bar' from 'foo/bar.pyc'>

如果你使用的 python3 那方法就多了,詳細(xì)請(qǐng)看下面

重載模塊方法二

如果你使用 Python3.0 -> 3.3,那么可以使用 imp.reload 方法

>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> import imp
>>> imp.reload(bar)
successful to be imported
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>

但是這個(gè)方法在 Python 3.4+,就不推薦使用了

<stdin>:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

重載模塊方法三

如果你使用的 Python 3.4+,請(qǐng)使用 importlib.reload 方法

>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> import importlib
>>> importlib.reload(bar)
successful to be imported
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>

重載模塊方法四

如果你對(duì)包的加載器有所了解

還可以使用下面的方法

>>> from foo import bar
successful to be imported
>>> from foo import bar
>>>
>>> bar.__spec__.loader.load_module()
successful to be imported
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>

重載模塊方法五

既然影響我們重復(fù)導(dǎo)入的是 sys.modules,那我們只要將已導(dǎo)入的包從其中移除是不是就好了呢?

>>> import foo.bar
successful to be imported
>>>
>>> import foo.bar
>>>
>>> import sys
>>> sys.modules['foo.bar']
<module 'foo.bar' from '/Users/MING/Code/Python/foo/bar.py'>
>>> del sys.modules['foo.bar']
>>>
>>> import foo.bar
successful to be imported

有沒(méi)有發(fā)現(xiàn)在前面的例子里我使用的都是 from foo import bar,在這個(gè)例子里,卻使用 import foo.bar,這是為什么呢?

這是因?yàn)槿绻闶褂?from foo import bar 這種方式,想使用移除 sys.modules 來(lái)重載模塊這種方法是失效的。

這應(yīng)該算是一個(gè)小坑,不知道的人,會(huì)掉入坑中爬不出來(lái)。

>>> import foo.bar
successful to be imported
>>>
>>> import foo.bar
>>>
>>> import sys
>>> del sys.modules['foo.bar']
>>> from foo import bar
>>>

以上就是python 模塊重載的五種方法的詳細(xì)內(nèi)容,更多關(guān)于python 模塊重載的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pandas 層次化索引的實(shí)現(xiàn)方法

    pandas 層次化索引的實(shí)現(xiàn)方法

    這篇文章主要介紹了pandas 層次化索引的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python中使用Chaco繪圖庫(kù)

    Python中使用Chaco繪圖庫(kù)

    這篇文章主要介紹了Python中使用Chaco繪圖庫(kù),Chaco是一個(gè)2D的繪圖庫(kù),如果你安裝了Python(x,y)的話,可以在pythonxy的安裝目錄下的找到Chaco的demo程序,Chaco提供了類似Matlab和pylab的繪圖方式,我們稱之為面向腳本的繪圖方式
    2023-11-11
  • pycharm 實(shí)現(xiàn)本地寫代碼,服務(wù)器運(yùn)行的操作

    pycharm 實(shí)現(xiàn)本地寫代碼,服務(wù)器運(yùn)行的操作

    這篇文章主要介紹了pycharm 實(shí)現(xiàn)本地寫代碼,服務(wù)器運(yùn)行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python實(shí)現(xiàn)微信發(fā)送郵件關(guān)閉電腦功能

    python實(shí)現(xiàn)微信發(fā)送郵件關(guān)閉電腦功能

    這篇文章主要介紹了python實(shí)現(xiàn)微信發(fā)送郵件關(guān)閉電腦功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 如何利用pygame實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲

    如何利用pygame實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲

    這篇文章主要給大家介紹了關(guān)于如何利用pygame實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用pygame具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python cx_freeze打包工具處理問(wèn)題思路及解決辦法

    Python cx_freeze打包工具處理問(wèn)題思路及解決辦法

    這篇文章主要介紹了Python cx_freeze打包工具處理問(wèn)題思路及解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • Python表格處理模塊xlrd在Anaconda中的安裝方法

    Python表格處理模塊xlrd在Anaconda中的安裝方法

    本文介紹在Anaconda環(huán)境下,安裝Python讀取.xls格式表格文件的庫(kù)xlrd的方法,xlrd是一個(gè)用于讀取Excel文件的Python庫(kù),本文介紹了xlrd庫(kù)的一些主要特點(diǎn)和功能,感興趣的朋友一起看看吧
    2024-04-04
  • python實(shí)現(xiàn)opencv+scoket網(wǎng)絡(luò)實(shí)時(shí)圖傳

    python實(shí)現(xiàn)opencv+scoket網(wǎng)絡(luò)實(shí)時(shí)圖傳

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)opencv+scoket網(wǎng)絡(luò)實(shí)時(shí)圖傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python  pandas中的shift位移操作方法

    Python  pandas中的shift位移操作方法

    shift()?函數(shù)是?Pandas?中用于移動(dòng)或偏移數(shù)據(jù)的重要工具,它可以處理時(shí)間序列數(shù)據(jù)、計(jì)算數(shù)據(jù)差值以及進(jìn)行數(shù)據(jù)預(yù)處理,本文介紹Python  pandas中的shift位移操作方法,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 在Python中使用成員運(yùn)算符的示例

    在Python中使用成員運(yùn)算符的示例

    這篇文章主要介紹了在Python中使用成員運(yùn)算符的示例,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05

最新評(píng)論

江安县| 庐江县| 榆社县| 晋州市| 怀化市| 抚宁县| 襄城县| 白玉县| 越西县| 阿拉善盟| 旬阳县| 遂平县| 盐池县| 垦利县| 扶绥县| 南开区| 上高县| 孝感市| 湖口县| 饶河县| 岫岩| 嘉祥县| 察隅县| 共和县| 怀化市| 临清市| 怀安县| 舒兰市| 若羌县| 子洲县| 博湖县| 江西省| 隆化县| 墨脱县| 山阴县| 仁寿县| 香港 | 赣州市| 永年县| 台湾省| 交口县|