1、動態匯入:
執行時,根據使用者需求(提供字串),找到模組的資源動態載入起來。
2、內建函式__import__()
defname:模組名__import__(name, globals=none, locals=none, fromlist=(), level=0):
import語句本質上就是呼叫這個函式,但是不鼓勵直接使用它,建議使用importlib.import_module()。
sys = __import__('sys')等價於import sys
測試 直接呼叫:
測試 可以動態互動載入模組:
12、importlib.import_module()if__name__ == '
__main__':
2 name = input('
>>>')
3 mod = __import__(name) #
import tt
4 cls = getattr(mod, 'a'
)5 cls().showme()
1支援絕對匯入 和 相對匯入,如果是相對匯入,package必須設定。測試:外掛程式化程式設計的核心**。import
importlib
2 importlib.import_module(name, package=none)
相對匯入:
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 ...