精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

python中間模塊重載介紹

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

python通過reload重載模塊動態(tài)更新最新代碼。

1.1 reload

用法

import moda
from importlib import reload
reload(moda)

描述

python的reload()函數(shù)需先從importlib導(dǎo)入。

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

假設(shè)模塊A文件,導(dǎo)入了模塊B和C,那么重載模塊A的時候,不會重載B和C。

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

文件內(nèi)容

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 執(zhí)行下面示例
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 模塊內(nèi)容
a=梯閱線條a
 'testreload' from 'E:\\\\documents\\\\F盤\\\\testreload.py'>
# 未更新中間模塊內(nèi)容
>>> testreload.modb.b
'b'
>>> testreload.modc.c
'c'
# 單獨reload 中間模塊,內(nèi)容更新成功
>>> 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為模塊的屬性,進行重載。

對中間模塊再導(dǎo)入的中間模塊,也調(diào)用此方法進行重載,即遞歸重載。

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

文件內(nèi)容

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 執(zhí)行下面示例
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’
# 調(diào)用 reload_all 自動重載中間模塊
>>> testreload.reload_all(testreload)
reloading:0testreload(in testreload)
run:E:\\documents\\F盤\\testreload.py
__name__:testreload
# 更新reload的模塊內(nèi)容
a=梯閱線條a
# 展示模塊層級關(guān)系,數(shù)字大的為小的中間模塊,in 為導(dǎo)入當前模塊的文件模塊
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
# 更新中間模塊內(nèi)容
b=bb
reloading:1-modc(in testreload)
run:E:\\documents\\F盤\\modc.py
__name__:modc
c=cc
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4306

    瀏覽量

    62430
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4748

    瀏覽量

    68351
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4782

    瀏覽量

    84453
收藏 人收藏

    評論

    相關(guān)推薦

    動態(tài)庫封裝成python模塊的方法

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

    python教程之如何使用XlsxWriter模塊創(chuàng)建aexcel表格

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

    Python的函數(shù)文件與模塊的程序說明

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

    Python-模塊與包

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

    python重載運算符init和str介紹

    python模塊都有個內(nèi)置屬性**name**。
    的頭像 發(fā)表于 02-21 10:33 ?653次閱讀

    python模塊屬性及字符串導(dǎo)入模塊介紹

    python可以通過點號或字典,獲取模塊屬性。 已經(jīng)導(dǎo)入的模塊存放在sys.modules字典,通過getattr獲取模塊屬性
    的頭像 發(fā)表于 02-21 11:27 ?714次閱讀

    python模塊相對導(dǎo)入from和import介紹1

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

    Python的組成和縮進介紹

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

    介紹Python模塊的基礎(chǔ)知識

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

    Python中telnetlib模塊的基本使用

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

    模塊重載的五種方法

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

    Python 重載與重寫的概念

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

    python如何導(dǎo)入模塊

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

    Python智能家居系統(tǒng)代碼介紹

    Python智能家居系統(tǒng)是一種基于Python編程語言開發(fā)的智能家居控制系統(tǒng),在現(xiàn)代家庭中得到了越來越廣泛的應(yīng)用。本文將詳細介紹Python智能家居系統(tǒng)的代碼實現(xiàn),包括系統(tǒng)的結(jié)構(gòu)與功能
    的頭像 發(fā)表于 01-25 09:46 ?1272次閱讀

    開關(guān)量模塊怎么控制中間繼電器

    開關(guān)量模塊控制中間繼電器是一種常見的工業(yè)自動化控制方式。在這篇文章中,我們將介紹開關(guān)量模塊的工作原理、中間繼電器的工作原理以及如何使用開關(guān)量
    的頭像 發(fā)表于 08-30 14:22 ?729次閱讀