成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

人生苦短 我用Python [0x01] 動態加載模塊

開發 開發工具
程序模塊化是軟件工程里面一個常見的設計思想,在軟件開發也比較常見,可以把代碼解耦,特別是在面對多人同時開發或者需要經常變動升級。

背景

程序模塊化是軟件工程里面一個常見的設計思想,在軟件開發也比較常見,可以把代碼解耦,特別是在面對多人同時開發或者需要經常變動升級。我們使用windows常見的dll就是模塊化的一個例子,一個軟件升級功能,可能就只需要升級一些dll文件就可以了,主題程序不用改動,又比如一些新功能可以用模塊的方式加載等,不僅有利于開發者還方便了使用者。

python的動態加載模塊

在python里面,導入一個模塊使用的是

  1. import 模塊名 

python會在sys.path里面尋找匹配名稱的文件(py, pyo, pyc, pyd, so, dll)等文件,我們可以在python里面打印sys.path是些什么目錄

  1. import sys 
  2. sys.path 
  3. #返回下面內容 
  4. ['''/usr/lib64/python26.zip''/usr/lib64/python2.6''/usr/lib64/python2.6/plat-linux2''/usr/lib64/python2.6/lib-tk''/usr/lib64/python2.6/lib-old''/usr/lib64/python2.6/lib-dynload''/usr/lib64/python2.6/site-packages''/usr/lib64/python2.6/site-packages/gtk-2.0''/usr/lib/python2.6/site-packages''/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info'

在代碼運行目錄下的文件名也可以作為模塊名導入,比如當前目錄下有一個名字叫tools.py的文件,直接在代碼里面import這個文件名導入。import之后的模塊會保存在sys.modules里面

我們可以看到我們剛才加載的tools.py

但是import只能夠加載固定名稱模塊,不能加載動態比如字符串名稱模塊,比如

  1. str = 'tools' 
  2. import str 
  3. #提示錯誤 
  4. Traceback (most recent call last): 
  5.   File "", line 1, in  
  6. ImportError: No module named str 

這個時候,我們需要用到__import__,這是一個python的內置函數,import底層其實也是使用了這個函數加載模塊的,我們可以看看

  1. __import__ 
  2. #返回 
  3.  
  4. str = 'tools' 
  5. __import__(str) 
  6. #返回加載tools.py成功 

好了,現在解決了動態加載隨意模塊的問題了,但是距離成功還有一步之遙,在python里面,加載模塊是有緩存的,意思就是說,加載tools.py之后,就算tools.py內容發生改變了,都不會重新加載,還是無法滿足我們實時更新加載模塊的需求。這里有個比較簡單的辦法,可以使得模塊有需要的時候重新加載,回想之前我們說過,python加載后的模塊都回保存在sys.modules里面,我們只需要再重新加載模塊之前,把模塊從sys.modules里面刪除即可。

  1. del sys.modules['tools'
  2. __import__('tools'

使用python這樣的特性,我們寫代碼的時候,就可以把經常需要變動的剝離出來成為一個python模塊,需要的時候動態更新然后重新加載到主程序里面,可以***實現不中斷服務升級。

【本文是51CTO專欄機構作者“睿江云EflyCloud”的原創文章,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2017-06-05 08:55:27

Python起源應用

2017-03-23 10:42:05

Pythonjava開發

2017-06-19 09:59:32

Python調試

2017-06-20 15:02:48

ChromeWebKit內核

2017-03-07 10:07:25

PythonIDE

2018-04-05 22:42:43

2020-11-03 11:18:35

Go語言GoLang編程語言

2021-03-23 11:02:27

ManjaroLinux

2020-12-15 15:21:41

C++JavaPython

2014-09-26 09:29:12

Python

2019-11-18 14:20:33

Python 開發編程語言

2018-04-16 09:31:17

2021-04-18 07:20:09

CMS系統模塊

2020-04-07 11:23:20

Python 開發編程語言

2016-11-04 13:30:07

Python運維工程師

2021-04-16 11:27:16

Python表情微信

2020-11-09 14:26:30

GitHub 技術開源

2021-09-18 12:05:59

Python 開發編程語言

2019-03-11 13:14:59

開發者

2018-08-09 18:27:03

編程語言JavaPython
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av大全在线观看 | 国内91在线 | 免费在线观看av网站 | 成人亚洲视频 | 欧美精品在线一区二区三区 | 99在线免费视频 | 羞羞视频在线免费 | 精品国模一区二区三区欧美 | 中文字幕在线观看一区 | 国产精品免费播放 | 四虎在线播放 | 日韩毛片在线视频 | 精品欧美一区二区在线观看视频 | a欧美| 这里有精品 | 看毛片网站 | 午夜在线小视频 | 国产精品一区一区 | 日韩免费毛片视频 | 亚洲激精日韩激精欧美精品 | 国产一区亚洲二区三区 | 四虎影音 | 精品国产成人 | 3级毛片| 中文字幕日韩欧美 | 亚洲国产成人久久综合一区,久久久国产99 | 日韩爱爱网站 | 亚洲国产精品一区二区第一页 | 婷婷久久精品一区二区 | 精品91 | 亚洲成人网在线播放 | 国产乱码精品一区二区三区五月婷 | 天天亚洲 | 成人精品一区二区 | 国产一区二区三区视频在线观看 | 国产精品久久久久久久久免费樱桃 | 视频一区在线 | 一区二区三区av夏目彩春 | 日韩欧美一区二区在线播放 | 欧洲av在线 | 夜久久 |