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

色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    2695

    瀏覽量

    47433
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84629
收藏 人收藏

    評論

    相關推薦

    電感計算公式與種方法

    由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 ?2153次閱讀

    安裝LED燈帶的5種方法

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

    種方法拆卸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>

    python中間模塊重載介紹

    python通過reload重載模塊動態更新最新代碼。 ## 1.1 reload
    的頭像 發表于 02-21 11:16 ?543次閱讀

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

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

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

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

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

    人臉檢測是計算機視覺領域的一個重要研究方向,主要用于識別和定位圖像中的人臉。以下是常見的人臉檢測方法及其特征和優缺點的介紹: 基于膚色的方法 特征:基于膚色的
    的頭像 發表于 07-03 14:47 ?807次閱讀
    主站蜘蛛池模板: 日本三级按摩推拿按摩| 成人无码国产AV免费看| 9久高清在线不卡免费无吗视频| 激情床戏视频片段有叫声| 手机看片国产免费久久网| 99手机在线视频| 牛牛超碰 国产| AV无码国产精品午夜A片麻豆| 美女屁股软件| 99re.05久久热最新地址| 老师的蕾丝小内内湿透了| 在线视频 中文字幕| 九九色精品国偷自产视频| 亚洲一级特黄| 久久青草影院| 《乳色吐息》无删减版在线观看| 久久水蜜桃亚洲AV无码精品偷窥| 在线成年av动漫电影| 老牛天天晚上夜噜噜噜| 69SEX久久精品国产麻豆| 男女啪啪久久精品亚洲A| c了瑜伽老师嗷嗷叫一节课视频| 欧美性黑吊xxx| 国产成人免费片在线视频观看| 玩弄朋友娇妻呻吟交换电影| 国产偷国产偷亚洲高清人乐享| 亚洲精品国产SUV| 开心久久激情| 把手戳进美女尿口里动态图| 色WWW永久免费视频首页| 国产日韩欧美综合久久| 亚洲综合视频| 欧美gv明星| 国产精品看高国产精品不卡| 亚洲免费每日在线观看| 毛片无码免费无码播放| 成人免费观看在线视频| 亚洲AV无码乱码国产麻豆穿越| 久久精品一区二区免费看| 99久久国产宗和精品1上映| 肉动漫无码无删减在线观看|