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

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

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

3天內不再提示

python中間模塊重載介紹

jf_78858299 ? 來源:梯閱線條 ? 作者:小梯子 ? 2023-02-21 11:16 ? 次閱讀

python通過reload重載模塊動態更新最新代碼。

1.1 reload

用法

import moda
from importlib import reload
reload(moda)

描述

python的reload()函數需先從importlib導入。

reload**( moda )****:**moda為模塊對象,即需先導入moda才能進行reload。

假設模塊A文件,導入了模塊B和C,那么重載模塊A的時候,不會重載B和C。

需要單獨對中間模塊B和C進行重載。

文件內容

E**:**\\documents\\F盤\\testreload.py

import os,sys
import modb
import modc

print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))
# a='梯閱線條' # 修改前
a='梯閱線條a' # 修改后
print("a={}".format(a))

E**:**\\documents\\F盤\\modb.py

import os,sys
print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))

# b='b' # 修改前
b='bb' # 修改后
print("b={}".format(b))

E**:**\\documents\\F盤\\modc.py

import os,sys
print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))

# c='c' # 修改前
c='cc' # 修改后
print("c={}".format(c))

示例

# 打開cmd 執行下面示例
E:\\documents\\F盤>python
>>> import testreload
run:E:\\documents\\F盤\\modb.py
__name__:modb
b=b
run:E:\\documents\\F盤\\modc.py
__name__:modc
c=c
run:E:\\documents\\F盤\\testreload.py
__name__:testreload
a=梯閱線條
# 修改a=’梯閱線條a’,b=’bb’,c=’cc’
>>> from importlib import reload
>>> reload(testreload)
run:E:\\documents\\F盤\\testreload.py
__name__:testreload
# 后只更新了reload 模塊內容
a=梯閱線條a
 'testreload' from 'E:\\\\documents\\\\F盤\\\\testreload.py'>
# 未更新中間模塊內容
>>> testreload.modb.b
'b'
>>> testreload.modc.c
'c'
# 單獨reload 中間模塊,內容更新成功
>>> reload(testreload.modb)
run:E:\\documents\\F盤\\modb.py
__name__:modb
b=bb
 'modb' from 'E:\\\\documents\\\\F盤\\\\modb.py'>
>>> reload(testreload.modc)
run:E:\\documents\\F盤\\modc.py
__name__:modc
c=cc
 'modc' from 'E:\\\\documents\\\\F盤\\\\modc.py'>
>>> testreload.modb.b
'bb'
>>> testreload.modc.c
'cc'
>>>

1.2 自動重載中間模塊

描述

通過遍歷模塊屬性字典 dict ,對類型type為模塊的屬性,進行重載。

對中間模塊再導入的中間模塊,也調用此方法進行重載,即遞歸重載。

從而達到自動重載中間模塊。

文件內容

E**:**\\documents\\F盤\\testreload.py

import os,sys
import types
import modb
import modc
from importlib import reload

print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))
#a='梯閱線條' # 修改前
a='梯閱線條a' # 修改后
print("a={}".format(a))

def reload_status(mod,lev,lastmod):
   print('reloading:'+ str(lev) + '-'*lev + mod.__name__ + '(in {})'.format(lastmod.__name__))
   
def reload_conv(mod,convd,lev,lastmod):
   if not mod in convd:
       reload_status(mod,lev,lastmod)
       reload(mod)
       convd[mod]=None
       for attr in mod.__dict__.values():
           if type(attr)==types.ModuleType:
               reload_conv(attr,convd,lev+1,mod)
               
def reload_all(*args):
   convd={}
   for arg in args:
       if type(arg)==types.ModuleType:
           reload_conv(arg,convd,0,arg)
           

if __name__ == '__main__':
   import testreload
   reload_all(testreload)

E**:**\\documents\\F盤\\modb.py

import os,sys
print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))

# b='b' # 修改前
b='bb' # 修改后
print("b={}".format(b))

E**:**\\documents\\F盤\\modc.py

import os,sys
print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))

# c='c' # 修改前
c='cc' # 修改后
print("c={}".format(c))

示例

# 打開cmd 執行下面示例
E:\\documents\\F盤>python
>>> import testreload
run:E:\\documents\\F盤\\modb.py
__name__:modb
b=b
run:E:\\documents\\F盤\\modc.py
__name__:modc
c=c
run:E:\\documents\\F盤\\testreload.py
__name__:testreload
a=梯閱線條
# 修改a=’梯閱線條a’,b=’bb’,c=’cc’
# 調用 reload_all 自動重載中間模塊
>>> testreload.reload_all(testreload)
reloading:0testreload(in testreload)
run:E:\\documents\\F盤\\testreload.py
__name__:testreload
# 更新reload的模塊內容
a=梯閱線條a
# 展示模塊層級關系,數字大的為小的中間模塊,in 為導入當前模塊的文件模塊
reloading:1-os(in testreload)
reloading:2--abc(in os)
reloading:2--sys(in os)
reloading:2--stat(in os)
reloading:2--ntpath(in os)
reloading:3---genericpath(in ntpath)
reloading:1-types(in testreload)
reloading:1-modb(in testreload)
run:E:\\documents\\F盤\\modb.py
__name__:modb
# 更新中間模塊內容
b=bb
reloading:1-modc(in testreload)
run:E:\\documents\\F盤\\modc.py
__name__:modc
c=cc
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62573
  • 代碼
    +關注

    關注

    30

    文章

    4779

    瀏覽量

    68525
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84628
收藏 人收藏

    評論

    相關推薦

    動態庫封裝成python模塊的方法

    之前的文章 將靜態庫封裝成 python 模塊中講解了如何將靜態庫封裝成 python 模塊,靜態庫封裝相對來說還是有點復雜,今天來介紹下動
    發表于 07-13 15:24 ?644次閱讀

    python教程之如何使用XlsxWriter模塊創建aexcel表格

    本文檔的主要內容詳細介紹的是python教程之如何使用XlsxWriter模塊創建aexcel表格。
    發表于 01-18 17:01 ?10次下載
    <b class='flag-5'>python</b>教程之如何使用XlsxWriter<b class='flag-5'>模塊</b>創建aexcel表格

    Python的函數文件與模塊的程序說明

    “探索Python ” 這一系列的前幾篇文章已為Python 編程新手介紹了幾方面的主題, 包括變量、容器對象和復合語句。本文以這些概念為基礎,構造一個完整的Python 程序。引入了
    發表于 09-10 16:06 ?2次下載
    <b class='flag-5'>Python</b>的函數文件與<b class='flag-5'>模塊</b>的程序說明

    Python-模塊與包

    模塊Python 程序架構的一個核心概念
    的頭像 發表于 02-16 14:55 ?767次閱讀
    <b class='flag-5'>Python</b>-<b class='flag-5'>模塊</b>與包

    python重載運算符init和str介紹

    python模塊都有個內置屬性**name**。
    的頭像 發表于 02-21 10:33 ?675次閱讀

    python模塊屬性及字符串導入模塊介紹

    python可以通過點號或字典,獲取模塊屬性。 已經導入的模塊存放在sys.modules字典,通過getattr獲取模塊屬性
    的頭像 發表于 02-21 11:27 ?741次閱讀

    python模塊相對導入from和import介紹1

    無包文件**init**.py下,python通過import module導入模塊時,先搜索程序運行主目錄。 程序運行主目錄為運行的py文件所在目錄,而不是執行python.exe時所在目錄。
    的頭像 發表于 02-21 14:15 ?1031次閱讀

    Python的組成和縮進介紹

    1. Python組成和縮進 Python程序由模塊組成。一個模塊對應python源文件,一般后綴名是:.py
    的頭像 發表于 03-05 17:09 ?1741次閱讀
    <b class='flag-5'>Python</b>的組成和縮進<b class='flag-5'>介紹</b>

    介紹Python模塊的基礎知識

    Python是一種高級編程語言,擁有豐富的庫和模塊模塊Python中一個獨立的、可重用的代碼單元,它包含了一組相關的函數、類和變量。
    的頭像 發表于 04-21 16:48 ?989次閱讀

    Python中telnetlib模塊的基本使用

    telnetlib 是 Python 標準庫中的一個模塊,它提供了 Telnet 協議的客戶端功能。使用 telnetlib 模塊,我們可以在 Python 中編寫腳本來自動化 Tel
    的頭像 發表于 05-04 14:27 ?8069次閱讀

    模塊重載的五種方法

    bar >> > 重載模塊方法一 如果你使用的 python2(記得前面在 foo 文件夾下加一個 __init__.py ),有一
    的頭像 發表于 11-02 10:50 ?336次閱讀

    Python 重載與重寫的概念

    在上一次的推送 《Python 監控文件事件變化—以音樂高潮提取為例》 中,最后繼承 LoggingEventHandler 類,對 on_created 進行修改的時候,我使用了一個詞叫:重載
    的頭像 發表于 11-03 15:13 ?577次閱讀
    <b class='flag-5'>Python</b> <b class='flag-5'>重載</b>與重寫的概念

    python如何導入模塊

    。本文將詳細介紹Python模塊導入的相關知識,并舉例演示常見的導入方式和用法。 首先,我們需要明確一些基本的概念。Python模塊
    的頭像 發表于 11-22 14:46 ?946次閱讀

    Python智能家居系統代碼介紹

    Python智能家居系統是一種基于Python編程語言開發的智能家居控制系統,在現代家庭中得到了越來越廣泛的應用。本文將詳細介紹Python智能家居系統的代碼實現,包括系統的結構與功能
    的頭像 發表于 01-25 09:46 ?1352次閱讀

    開關量模塊怎么控制中間繼電器

    開關量模塊控制中間繼電器是一種常見的工業自動化控制方式。在這篇文章中,我們將介紹開關量模塊的工作原理、中間繼電器的工作原理以及如何使用開關量
    的頭像 發表于 08-30 14:22 ?981次閱讀
    主站蜘蛛池模板: 日本无翼恶漫画大全优优漫画| 青青草原国产| 99久久99久久精品| 日韩中文网| 久久视频精品38在线播放| 67194成网页发布在线观看| 欧美中文字幕一区二区三区| 国产精品VIDEOS麻豆TUBE | 亚洲日韩欧美国产专区| 精品国产乱码久久久久久人妻| 中文字幕 日韩 无码 在线| 青青久久国产| 极品少妇高潮啪啪AV无码吴梦梦| 123成人站| 亚洲av欧美在我| 青娱乐国产精品视频| 和姐姐做插得很深| wwwzzz日本| 玉林天天论坛| 午夜色情影院色a国产| 男女后进式猛烈xx00动态图片| 国产欧美日韩国产高清| 99热.com| 2021国产精品| 伊人大香人妻在线播放| 亚洲国产精品嫩草影院久久| 日本亚洲中文字幕无码区| 久久一本综合| 久久99热只有频精品| 国产日韩久久久精品影院首页 | 亚洲AV午夜福利精品香蕉麻豆| 青青精品视频国产| 伦理在线影院伦理电影| 久久9精品区-无套内射无码| 国产精品久久久久久52AVAV| 国产福利秒拍weipai.ee| 拔萝卜电视剧高清免费 | 亚洲乱码在线卡一卡二卡新区| 无码人妻丰满熟妇区五十路久久| 日韩精品a在线视频| 日韩1区1区产品乱码芒果榴莲 |