
Python 支持通过 eval 函数执行字符串命令,本文记录相关内容。
eval(expression[, globals[, locals]])a="[1,2,3,4,5]"
b=eval(a)
>>>
b = [1, 2, 3, 4, 5]exec(object[, globals[, locals]])exec 返回值永远为 None。
>>>exec('print("Hello World")')
Hello World
# 单行语句字符串
>>> exec("print ('runoob.com')")
runoob.com
 
#  多行语句字符串
>>> exec ("""for i in range(5):
...     print ("iter time: %d" % i)
... """)
iter time: 0
iter time: 1
iter time: 2
iter time: 3
iter time: 4x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""
def func():
    y = 20
    exec(expr)
    exec(expr, {'x': 1, 'y': 2})
    exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
    
func()
>>>
60
33
34eval 仅执行表达式,复杂的语句无法执行,但可以使用 exec,以导入模块为例
eval 函数
如果我执行import vfs_tests as v,它就会起作用。但是,使用eval()的同一导入(如eval(‘import vfs_tests as v’))会引发语法错误。
exec('import vfs_tests as v')
> 额外地,对于导入模块也可以使用 importlib 模块:
>
> ```python
> import importlib
> mod = importlib.import_module('vfs_tests')