python: คำสั่ง exec

Topic: 
 

Python มีคำสั่ง exec ที่ใช้ในการแทนค่าตัวแปรแล้วรันคำสั่งแบบพลวัต (dynamicly)
บันทึกพฤติกรรมของ exec ไว้ดังนี้

การใช้งาน
>>> var='123'
>>> a='print %s' % (var)
>>> exec a    # OR exec(a)
123
การกำหนดตัวแปร var ใหม่ ไม่สามารถเปลี่ยนแปลงการแทนค่าจากครั้งก่อน ต้องกำหนดใหม่ทั้งสองครั้ง
>>> var=456
>>> exec a
123
>>> a='print %s' % (var)
>>> exec a
456
การแทนค่า ไพธอนจะแทนค่าทุกสิ่งทุกอย่างของตัวแปร ลงไปในคำสั่ง
เวลาใช้กับตัวแปร string ต้องใส่เครื่องหมาย quot ซ้อนด้วย
>>> var='abc'
>>> a='print %s' % (var)
>>> exec a
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<string>", line 1, in ?
NameError: name 'abc' is not defined

>>> var='"abc"'
>>> a='print %s' % (var)
>>> exec a
abc

ยกเว้นกรณีคำสั่ง import ต้องใช้แบบปกติ

>>> var='re'
>>> a='import %s' % (var)
>>> exec a
>>> dir(re)
['DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE', 'S', 'U', 'UNICODE', 'VERBOSE', 'X', '__all__', '__builtins__', '__doc__', '__file__', '__name__', 'compile', 'engine', 'error', 'escape', 'findall', 'finditer', 'match', 'purge', 'search', 'split', 'sub', 'subn', 'template']