import โมดูล
แต่หากชื่อโมดูลอยู่ในตัวแปร เช่น
>>> x = 're'
>>> import x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'x'
แล้ว import โมดูลจากตัวแปรในภาษา Python อย่างไร ? บทความนี้เรามาหาคำตอบกันครับ
เราไม่สามารถใช้ค่าตัวแปรเป็นชื่อโมดูลได้ แม้ว่าจะกำหนดชื่อตัวแปรแล้วก็ตาม เพราะภาษา Python มองค่าที่อยู่หลัง import เป็นชื่อโมดูล ไม่ใช่ชื่อตัวแปร จึงต้องใช้คำสั่ง __import__ แทน import
คำสั่ง __import__ เป็นคำสั่งสำหรับ import โมดูลจากค่าตัวแปร ไปเป็นตัวแปร
มีหลักการใช้งานดังนี้
__import__(import_name)
จากตัวอย่าง
>>> x = 're'หากเราใช้คำสั่ง __import__
>>> import x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'x'
>>> x = 're'จะเห็นได้ว่า ตอนนี้ตัวแปร a เป็นตัวแทนโมดูล re
>>> a = __import__(x)
>>> a
<module 're' from '...'>
และหากเราเขียนโมดูลขึ้นมาใช้งานเอง หากเราต้องการใช้คำสั่ง __import__ กับโมดูลที่เขียนขึ้นมา ทำได้โดยเติม globals เข้าไปใน
__import__(import_name, globals={})
เช่น มีไฟล์โมดูลชื่อ aa.py หากต้องการใช้คำสั่ง __import__ สามารถใช้คำสั่ง
__import__('aa', globals=globals())อ่านรายละเอียดเพิ่มเติมได้จาก https://docs.python.org/3/library/functions.html?highlight=__import__#__import__
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)