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

python如何重載模塊實例解析

 更新時間:2018年01月25日 16:58:07   作者:suipingsp  
這篇文章主要介紹了python如何重載模塊實例解析,涉及模塊的概念,載入和重載的實例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文首先介紹了Python中的模塊的概念,談到了一個模塊往往由多個模塊組成,然后通過具體實例,分析了模塊重載的相關(guān)內(nèi)容,具體介紹如下。

模塊是Python程序架構(gòu)的一個核心概念,較大的程序往往以多個模塊文件的形式呈現(xiàn),一個模塊被設(shè)計成主文件或頂層文件,用來啟動整個Python程序。每個以.py為后綴的Python源代碼文件都是一個模塊,其他文件可通過“導(dǎo)入”讀取這個模塊的內(nèi)容。從一般意義上講,模塊就是變量名的封裝。如寫一個模塊test.py,包含一個兩個變量名name、age。

name='Aidan' 
age=27 

那么,通過在Python命令行中執(zhí)行下述命令

import test 
print(test.name, test.age) 

可以得到結(jié)果:Aidan 27

函數(shù)dir(modelname)可以用來獲取模塊內(nèi)部可用的變量名,其中會包含一些Python內(nèi)置的變量名如'__doc__、__file__'。
一個Python程序往往由多個模塊組成,通過import連接。每個模塊文件都是一個命名空間,看不到其他模塊文件的變量名,除非通過import導(dǎo)入了那個文件或者通過from model import varible導(dǎo)入某個變量。這樣就避免了變量命名的沖突,因為每個模塊都是獨立的命名空間,類似于C語言里一個個函數(shù)和其局部變量。

從本質(zhì)上,“導(dǎo)入”就是在一個文件中載入另一個文件的內(nèi)容,從而使另一個文件能夠被放在外部世界使用,指令就是import name.py。導(dǎo)入只在每次會話的第一次執(zhí)行有效果,后續(xù)再多次導(dǎo)入同一個文件時無效的,即使文件發(fā)生了更改,這是因為第一次導(dǎo)入時就將文件編譯成了字節(jié)碼。導(dǎo)入模塊必須知道模塊的詳細路徑(文件搜索,可通過sys.path中PYTHONPATH變量指明所有需要搜索的目錄),因此為了簡單,將所有需要導(dǎo)入的文件放在同一個目錄。

若想在同一次會話中多次運行同一個文件(或文件發(fā)生改變、必須重載),那就需要調(diào)用“重載”函數(shù)-reload(name),調(diào)用reload函數(shù)前請確保已經(jīng)通過import成功導(dǎo)入了該模塊??辞濉昂瘮?shù)”reload()和“語句”import的區(qū)別,reload()是一個函數(shù)、參數(shù)就是已導(dǎo)入的文件模塊文件名,import是一個語句、不需要括號。Python的重載功能允許用戶在交互過程中編輯并改進代碼模塊,因此為了確保運行的是最新的代碼,首先使用reload()。

flask 在調(diào)試時,如果我們對文件有所修改,服務(wù)器就會重新啟動,而無需我們停下服務(wù)器再重新啟動,這里面就暗藏了一個重載的機制。

下面用一個簡單的例子,來解釋python如何重載一個模塊

新建一個名為reloadsetting.py 的文件,內(nèi)容很簡單:

#coding=utf-8 
''''' 
Created on 2016-3-25 
 
@author: Administrator 
''' 
 
msg = 'change it ' 

再新建一個名稱為reloaddemo.py的文件,內(nèi)容為:

#coding=utf-8 
''''' 
Created on 2016-3-25 
 
@author: Administrator 
''' 
import threading 
import reloadsetting 
import sys,os, time 
 
 
def printworker(): 
  while True: 
    time.sleep(1) 
    print reloadsetting.msg 
   
def auto_reload(): 
  while True: 
     
    mods = ["reloadsetting"] # the need reload modules 
    
    for mod in mods: 
      try: 
        module = sys.modules[mod] 
      except: 
        continue 
       
      #獲得文件的名字 
      filename = module.__file__ 
       
      #pyc結(jié)尾的文件,只在第一次載入時生成,因此,即便我們對文件進行了修改,運行中,它的修改時間是不會變的 
      if filename.endswith(".pyc"): 
        filename = filename.replace(".pyc", ".py") 
      #獲得文件上一次修改的時間 
      mod_time = os.path.getmtime(filename) 
      #module.__dict__ 里保存了模塊的信息,具體參考globals函數(shù) 
      if not "loadtime" in module.__dict__: 
        module.loadtime = 0 # first load's time 1* 
      try: 
        #如果修改時間大于上一次載入的時間,那么就重新載入 
        if mod_time > module.loadtime: 
          reload(module) 
      except: 
        pass 
    
      module.loadtime = mod_time 
      time.sleep(1) 
if __name__ == '__main__': 
  t_reload = threading.Thread(target=auto_reload) 
  t_reload.start() 
   
  t_reload2 = threading.Thread(target=printworker) 
  t_reload2.start() 

我們啟動運行reloaddemo.py ,一個線程不停的打印reloadsetting模塊中的msg,一個線程不停的嘗試重載reloadsetting模塊。在運行過程中,修改reloadsetting模塊中的msg的內(nèi)容,很快,打印出來的內(nèi)容也會隨之發(fā)生變化,你可能會擔(dān)心,如果在修改時不慎寫錯了代碼,比如把msg給刪除掉了,或者寫成了 msg = ,而后面根本就沒有賦值,那重載豈不是就失敗了么,這種擔(dān)憂是多余的,即便模塊reloadsetting中有錯誤,那么在調(diào)用reload函數(shù)時,也不會發(fā)生錯誤,模塊仍然是上一次有效reload后的狀態(tài),不信,你可以試一試

總結(jié)

以上就是本文關(guān)于python如何重載模塊實例解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Python中remove漏刪和索引越界問題的解決

    Python中remove漏刪和索引越界問題的解決

    這篇文章主要介紹了Python中remove漏刪和索引越界問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Python實現(xiàn)自動整理表格的示例代碼

    Python實現(xiàn)自動整理表格的示例代碼

    這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)自動整理表格的功能,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • Python實現(xiàn)輕松讀取大文件的技巧揭秘

    Python實現(xiàn)輕松讀取大文件的技巧揭秘

    Python提供了多種方法來讀取文件內(nèi)容,其中包括read()、readline()和readlines()三個常用的函數(shù),本文將深入探討這三個函數(shù)的使用方法,需要的可以參考一下
    2023-08-08
  • python?隨機生成emoji表情的方法實現(xiàn)

    python?隨機生成emoji表情的方法實現(xiàn)

    本文主要介紹了python?隨機生成emoji表情的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • python xlsxwriter模塊的使用

    python xlsxwriter模塊的使用

    這篇文章主要介紹了python xlsxwriter模塊的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python數(shù)據(jù)結(jié)構(gòu)之樹的全面解讀

    Python數(shù)據(jù)結(jié)構(gòu)之樹的全面解讀

    數(shù)據(jù)結(jié)構(gòu)中有很多樹的結(jié)構(gòu),其中包括二叉樹、二叉搜索樹、2-3樹、紅黑樹等等。本文中對數(shù)據(jù)結(jié)構(gòu)中常見的樹邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)進行了匯總,不求嚴(yán)格精準(zhǔn),但求簡單易懂
    2021-11-11
  • python實現(xiàn)自動整理文件

    python實現(xiàn)自動整理文件

    這篇文章主要介紹了python實現(xiàn)自動整理文件,主要內(nèi)容通過整理桌面雜亂無章都是文檔和資料了解用python如何批量將不同后綴的文件移動到同一文件夾,需要的朋友可以參考一下
    2022-04-04
  • Python爬蟲爬取微信朋友圈

    Python爬蟲爬取微信朋友圈

    這篇文章主要介紹了Python爬蟲爬取微信朋友圈的方法,文中講解非常細致,幫助大家更好的理解和學(xué)習(xí)Python爬蟲,感興趣的朋友可以了解下
    2020-08-08
  • Python入門_淺談字符串的分片與索引、字符串的方法

    Python入門_淺談字符串的分片與索引、字符串的方法

    下面小編就為大家?guī)硪黄狿ython入門_淺談字符串的分片與索引、字符串的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 使用 NumPy 和 Matplotlib 繪制函數(shù)圖

    使用 NumPy 和 Matplotlib 繪制函數(shù)圖

    Matplotlib 是 Python 的繪圖庫。 它可與 NumPy 一起使用,提供了一種有效的 MatLab 開源替代方案。 它也可以和圖形工具包一起使用,如 PyQt 和 wxPython
    2021-09-09

最新評論

淳化县| 犍为县| 宕昌县| 偃师市| 镇康县| 库车县| 灌阳县| 凤山市| 民勤县| 江永县| 洱源县| 青海省| 湘潭县| 天峨县| 炎陵县| 郑州市| 屏东县| 安康市| 菏泽市| 浙江省| 黄大仙区| 东山县| 福鼎市| 什邡市| 共和县| 东港市| 开封市| 鹰潭市| 成安县| 辉县市| 彭泽县| 阜新市| 铁力市| 交口县| 德江县| 桐庐县| 阳泉市| 中卫市| 武平县| 北票市| 苗栗市|