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

python如何重載模塊實例解析

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

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

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

name='Aidan' 
age=27 

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

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

可以得到結果:Aidan 27

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

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

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

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

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

新建一個名為reloadsetting.py 的文件,內容很簡單:

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

再新建一個名稱為reloaddemo.py的文件,內容為:

#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結尾的文件,只在第一次載入時生成,因此,即便我們對文件進行了修改,運行中,它的修改時間是不會變的 
      if filename.endswith(".pyc"): 
        filename = filename.replace(".pyc", ".py") 
      #獲得文件上一次修改的時間 
      mod_time = os.path.getmtime(filename) 
      #module.__dict__ 里保存了模塊的信息,具體參考globals函數 
      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的內容,很快,打印出來的內容也會隨之發(fā)生變化,你可能會擔心,如果在修改時不慎寫錯了代碼,比如把msg給刪除掉了,或者寫成了 msg = ,而后面根本就沒有賦值,那重載豈不是就失敗了么,這種擔憂是多余的,即便模塊reloadsetting中有錯誤,那么在調用reload函數時,也不會發(fā)生錯誤,模塊仍然是上一次有效reload后的狀態(tài),不信,你可以試一試

總結

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

相關文章

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

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

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

    Python實現自動整理表格的示例代碼

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

    Python實現輕松讀取大文件的技巧揭秘

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

    python?隨機生成emoji表情的方法實現

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

    python xlsxwriter模塊的使用

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

    Python數據結構之樹的全面解讀

    數據結構中有很多樹的結構,其中包括二叉樹、二叉搜索樹、2-3樹、紅黑樹等等。本文中對數據結構中常見的樹邏輯結構和存儲結構進行了匯總,不求嚴格精準,但求簡單易懂
    2021-11-11
  • python實現自動整理文件

    python實現自動整理文件

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

    Python爬蟲爬取微信朋友圈

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

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

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

    使用 NumPy 和 Matplotlib 繪制函數圖

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

最新評論

营口市| 汽车| 望城县| 潞城市| 宁安市| 铜山县| 乌兰浩特市| 大余县| 海安县| 海门市| 曲阳县| 资源县| 句容市| 黄大仙区| 蒙山县| 余江县| 收藏| 横山县| 兴文县| 霍林郭勒市| 龙江县| 布拖县| 武乡县| 舞阳县| 陆良县| 兴山县| 鄯善县| 临朐县| 普陀区| 聂拉木县| 古蔺县| 张家口市| 钟祥市| 介休市| 内乡县| 宜章县| 和静县| 罗城| 靖州| 清徐县| 龙游县|