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

python 模塊重載的五種方法

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

環(huán)境準備

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

$ tree foo
foo
└── bar.py

0 directories, 1 file

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

print("successful to be imported")

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

禁止重復導入

由于有 sys.modules 的存在,當你導入一個已導入的模塊時,實際上是沒有效果的。

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

重載模塊方法一

如果你使用的 python2(記得前面在 foo 文件夾下加一個 __init__.py),有一個 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 那方法就多了,詳細請看下面

重載模塊方法二

如果你使用 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'>

但是這個方法在 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+,請使用 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'>

重載模塊方法四

如果你對包的加載器有所了解

還可以使用下面的方法

>>> 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'>

重載模塊方法五

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

>>> 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

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

這是因為如果你使用 from foo import bar 這種方式,想使用移除 sys.modules 來重載模塊這種方法是失效的。

這應該算是一個小坑,不知道的人,會掉入坑中爬不出來。

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

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

相關(guān)文章

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

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

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

    Python中使用Chaco繪圖庫

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

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

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

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

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

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

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

    Python cx_freeze打包工具處理問題思路及解決辦法

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

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

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

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

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

    Python  pandas中的shift位移操作方法

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

    在Python中使用成員運算符的示例

    這篇文章主要介紹了在Python中使用成員運算符的示例,是Python學習中的基礎知識,需要的朋友可以參考下
    2015-05-05

最新評論

普格县| 余江县| 乌鲁木齐县| 南京市| 大丰市| 通河县| 大姚县| 攀枝花市| 神农架林区| 肥东县| 永年县| 台前县| 隆德县| 江门市| 旬邑县| 布尔津县| 北海市| 涞水县| 扎鲁特旗| 榆林市| 府谷县| 东城区| 安义县| 兴文县| 成安县| 石家庄市| 上饶县| 开封县| 沂水县| 广宁县| 贞丰县| 岳普湖县| 鲜城| 彰武县| 哈尔滨市| 南安市| 沂南县| 大姚县| 汶川县| 开封县| 武乡县|