> > from foo import barsuccessful to be imported >> > from foo import bar >> > 重載模塊方法一 如果你使用的 python2(記得前面在 foo 文件夾下加一個 __init__.py ),有一" />

在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

模塊重載的五種方法

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-02 10:50 ? 次閱讀

環境準備

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

$ tree foo
foo
└── bar.py

0 directories, 1 file

bar.py 的內容非常簡單,只寫了個 print 語句

print("successful to be imported")

只要 bar.py 被導入一次,就被執行一次 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' >

重載模塊方法四

如果你對包的加載器有所了解(詳細可以翻閱我以前寫的文章: https://iswbm.com/84.html

還可以使用下面的方法

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

有沒有發現在前面的例子里我使用的都是 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
 >> >
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2785

    瀏覽量

    49825
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86347
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    電感計算公式與種方法

    由Q值決定諧振電感: l 單位: 微亨第種方法:線圈電感的計算公式1、針對環行CORE,有以下公式可利用: (IRON)L=N2.AL L= 電感值(H)H-DC=0.4πNI / l N= 線圈
    發表于 11-02 09:19

    java方法重載詳解

    Java重載是指Java允許在一個類中,存在多個擁有相同的名字,但參數不同的方法,編譯器會根據實際情況挑選出正確的方法,如果編譯器找不到匹配的參數或者找出多個可能的匹配就會產生編譯時錯誤,這個過程
    發表于 03-19 16:14

    實現流水燈的方法介紹

    的主題,今天的主題是種方法實現流水燈,講這個的目的不是為了讓你會種方法而可以在小伙伴中炫耀,而是想告訴大家一個理念,學習要善于思考,活學活用,解決問題的辦法不只有一個。好了,先上一
    發表于 07-13 00:30

    基于MySQL根據出生日期計算年齡的種方法

    MySQL根據出生日期計算年齡的種方法比較
    發表于 04-01 14:49

    啟動Redis的三種方法

    Redis筆記(1)——安裝、卸載、三種方法啟動Redis,Redis命令使用(干貨十足),Redis兩種方法設置密碼,時間復雜度(更完善哦~)
    發表于 06-08 16:09

    芯片功能測試的種方法

    芯片功能測試常用5種方法有板級測試、晶圓CP測試、封裝后成品FT測試、系統級SLT測試、可靠性測試。
    發表于 06-09 16:25

    噪聲系數測量的三種方法

    噪聲系數測量的三種方法 本文介紹了測量噪聲系數的三種方法:增益法、Y
    發表于 05-07 13:38 ?2285次閱讀

    解決電池問題有三種方法

    解決電池問題有三種方法      對于手機電池問題如何解決,業內人士指出有以下三種方法:   一、發明新型電池。目前有日本生產商已經展示了概念性的燃
    發表于 11-10 14:26 ?1057次閱讀

    安裝LED燈帶的5種方法

    如何安裝LED燈帶呢?大家可以試試以下種方法
    發表于 07-20 14:53 ?9100次閱讀

    種方法拆卸PCB貼片元件資料下載

    電子發燒友網為你提供種方法拆卸PCB貼片元件資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-24 08:42 ?11次下載
    <b class='flag-5'>五</b><b class='flag-5'>種方法</b>拆卸PCB貼片元件資料下載

    python統計詞頻的三種方法

    python統計詞頻的三種方法方法
    發表于 05-25 14:33 ?2次下載

    識別電路的10種方法

    對較復雜的電路應先將原電路簡化為等效電路,以便分析和計算。識別電路的方法很多,現結合具體實例介紹十種方法
    發表于 02-08 16:20 ?243次下載
    識別電路的10<b class='flag-5'>種方法</b>

    分享芯片功能測試的種方法

    芯片功能測試常用5種方法有板級測試、晶圓CP測試、封裝后成品FT測試、系統級SLT測試、可靠性測試。
    的頭像 發表于 06-09 15:46 ?3620次閱讀
    分享芯片功能測試的<b class='flag-5'>五</b><b class='flag-5'>種方法</b>!

    實現更好5G的種方法.zip

    實現更好5G的種方法
    發表于 01-13 09:07 ?0次下載

    人臉檢測的種方法各有什么特征和優缺點

    人臉檢測是計算機視覺領域的一個重要研究方向,主要用于識別和定位圖像中的人臉。以下是常見的人臉檢測方法及其特征和優缺點的介紹: 基于膚色的方法 特征:基于膚色的
    的頭像 發表于 07-03 14:47 ?1489次閱讀
    主站蜘蛛池模板: 美女被羞羞产奶视频网站 | 老司机51精品视频在线观看 | 好男人社区www的视频免费 | 福利视频自拍偷拍 | 51午夜 | 久久天天干 | 久久黄视频 | 天天操人人 | 天天天天做夜夜夜做 | 色国产在线视频一区 | 精品国产成人三级在线观看 | 白丝丝袜高跟国产在线视频 | 伊人久久大香线蕉资源 | 天堂tv亚洲tv日本tv欧美人tv | 在线日本人观看成本人视频 | 在线看片地址 | 天天视频观看 | 天天做天天爱天天大综合 | 波多野结衣久久国产精品 | 国产一区二区三区免费大片天美 | 五月激情片| 18岁女人毛片 | 我想看一级黄色片 | 亚洲 欧美 自拍 另类 欧美 | 日韩免费一级 | 国产香蕉视频在线观看 | 国产aaa级一级毛片 国产ar高清视频+视频 | 四大名著成人高h肉版 | 国产理论在线 | 亚洲人毛茸茸bbxx | 狠狠干天天色 | 色综合欧美综合天天综合 | 欧美精品videosex极品 | 亚洲酒色1314狠狠做 | julia一区二区三区中文字幕 | 国产男人女人做性全过程视频 | 午夜撸| 在线看片成人免费视频 | 4虎影院在线观看 | 午夜精品福利在线 | 免费在线观看a视频 |