Python 外掛程式化開發

2022-09-15 04:09:11 字數 1717 閱讀 7237

1、動態匯入:

執行時,根據使用者需求(提供字串),找到模組的資源動態載入起來。

2、內建函式__import__()

def

__import__(name, globals=none, locals=none, fromlist=(), level=0):

name:模組名

import語句本質上就是呼叫這個函式,但是不鼓勵直接使用它,建議使用importlib.import_module()。

sys = __import__('sys')等價於import sys

測試  直接呼叫:

測試 可以動態互動載入模組:

1

if__name__ == '

__main__':

2 name = input('

>>>')

3 mod = __import__(name) #

import tt

4 cls = getattr(mod, 'a'

)5 cls().showme()

2、importlib.import_module() 

1

import

importlib

2 importlib.import_module(name, package=none)

支援絕對匯入 和 相對匯入,如果是相對匯入,package必須設定。測試:外掛程式化程式設計的核心**。

相對匯入:

3、外掛程式化程式設計技術:

依賴的技術:

反射:執行時獲取型別的資訊,可以動態維護型別資料。

動態import:推薦使用importlib 模組,實現動態import模組的能力。

多執行緒:可以開啟乙個執行緒,等待使用者輸入,從而載入指定名稱的模組。

載入的時機:

1、程式啟動時:

像pycharm 這樣的工具,需要很多組建,這些元件也可能是外掛程式,啟動的時候,掃瞄固定的目錄,載入外掛程式

2、程式執行中:

程式執行過程中,接受使用者指令或請求,啟動相應的外掛程式。

兩種當時各有利弊,如果外掛程式過多,或導致程式啟動很慢,如果使用者需要時載入,如果產檢太大或者依賴多,外掛程式也會啟動慢

所以先載入必須的,常用的外掛程式,其他外掛程式使用時,在動態載入。

4、應用:

軟體的設計不可能完美,或者在某些功能上,不可能做的專業,需要專業的客戶增強。如ps

5、介面和外掛程式的區別:

介面往往是暴露出來的功能,例如模組提供的函式或方法,載入模組後嗲用這些函式完成功能,

介面也是一種規範,它約定了必須是此案的功能(必須提供某名稱的函式), 但是不關心怎麼實現這個功能。

外掛程式是把模組載入到系統中,執行它,增強當前系統功能,或者提供系統不具備的功能,往往外掛程式技術應用在框架設計中,系統本身設計簡單化,輕量級,實現基本功能後,其他功能通過外掛程式加入進來,方便擴充套件。

python外掛程式化開發

動態匯入 執行時,根據使用者需求 提供字串 找到模組的資源動態載入起來。sys import sys 等價於import sys 在 xyz.py class a def show self0 print 123 在 主程式模組 if name main mod import xyz cls get...

Python 外掛程式化開發

執行時,根據使用者需求 提供字串 找到模組的資源動態載入起來 import name,globals none,locals none,fromlist level 0 importlib.import module name,package none t8.py classa defshowme ...

元件化開發,外掛程式化開發和熱修復

外掛程式化開發和熱修復 所以外掛程式化比熱修復簡單,熱修復是在外掛程式化的基礎上在進行替舊的bug類 android元件化和外掛程式化開發 外掛程式化是在 執行時 而元件化是在 編譯時 換句話說,外掛程式化是基於多 apk 的,而元件化本質上還是只有乙個 apk。droidplugin small ...