Ash*_*ary 41
用途exec:
exec 'import vfs_tests as v'
Run Code Online (Sandbox Code Playgroud)
eval仅适用于表达式,import是一种陈述.
exec 是Python 3中的一个函数: exec('import vfs_tests as v')
要使用字符串导入模块,您应该使用 importlib模块:
import importlib
mod = importlib.import_module('vfs_tests')
Run Code Online (Sandbox Code Playgroud)
在Python 2.6及更早版本中使用__import__.
如果你想将所有代码作为字符串传递给 eval 函数,我的小技巧是:
>>> eval('exec("import uuid") or str(uuid.uuid4())')
'bc4b921a-98da-447d-be91-8fc1cebc2f90'
>>> eval('exec("import math") or math.sqrt(2)')
1.4142135623730951
Run Code Online (Sandbox Code Playgroud)
实际上。如果您绝对需要使用导入eval(例如代码注入),您可以在 Python 3 中执行以下操作,因为它exec是一个函数:
eval("exec('import whatever_you_want')")
Run Code Online (Sandbox Code Playgroud)
例如: