Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คุณจะเพิ่มโมดูล Python แบบไดนามิกให้กับแพ็คเกจได้อย่างไรในขณะที่การเขียนโปรแกรมของคุณกำลังทำงานอยู่?


ในการนำเข้าโมดูล Python แบบไดนามิก คุณสามารถใช้ฟังก์ชัน import_module(moduleName) ของแพ็คเกจ importlib คุณต้องมี moduleName เป็นสตริง ตัวอย่างเช่น

>>> from importlib import import_module
>>> moduleName = "os"
>>> globals()[moduleName] = import_module(moduleName)

หากคุณต้องการนำเข้ารายการโมดูลแบบไดนามิก คุณสามารถเรียกสิ่งนี้จาก for loop ได้ ตัวอย่างเช่น

>>> import importlib
>>> modnames = ["os", "sys", "math"]
>>> for lib in modnames:
...     globals()[lib] = importlib.import_module(lib)

การเรียก globals() ส่งคืน dict เราสามารถตั้งค่าคีย์ lib สำหรับแต่ละไลบรารีเป็นวัตถุที่ส่งคืนให้เราเมื่อนำเข้าโมดูล

หากคุณได้นำเข้าแพ็คเกจและตอนนี้ต้องการนำเข้าหนึ่งในโมดูลแบบไดนามิก คุณยังสามารถใช้ฟังก์ชันเดิมและรับผลลัพธ์ที่คาดหวังได้ โมดูลที่คุณต้องการนำเข้าควรมีชื่อเต็ม ไม่ใช่แค่ชื่อโมดูลเท่านั้น ตัวอย่างเช่น

>>> import importlib
>>> pack = 'datetime'
>>> mod = 'date'
>>> globals()[pack] = importlib.import_module(pack)
>>> globals()[pack + '.' + mod] = importlib.import_module(pack + '.' + mod)