27 มกราคม 2559

Published มกราคม 27, 2559 by with 0 comment

import โมดูลจากตัวแปรในภาษา Python

สวัสดีผู้อ่านทุกท่านครับ ในการเรียกใช้งานโมดูลต่าง ๆ ในภาษา Python เรามักจะคุ้นเคยกับคำสั่ง

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 x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'x'
หากเราใช้คำสั่ง __import__
>>> x = 're'
>>> a = __import__(x)
>>> a
<module 're' from '...'>
จะเห็นได้ว่า ตอนนี้ตัวแปร a เป็นตัวแทนโมดูล re

และหากเราเขียนโมดูลขึ้นมาใช้งานเอง หากเราต้องการใช้คำสั่ง __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 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)