#Python 的内置函数 eval
说明:执行表达式并返回结果。
#函数说明
def eval(source:str|codeobject, /, globals:dict=None, locals:mapping=None):
'''
执行表达式并返回结果
:param source: Python 表达式
:param globals : 全局命名空间字典
:param locals : 局部命名空间字典
:return: 表达式的求值结果
'''
说明
执行表达式并返回结果。
参数
source- 字符串形式的 Python 表达式,或者是代码对象globals- 全局命名空间字典- 默认为
None,即使用当前环境的全局命名空间 - 如果不包含
__builtins__键,则自动插入内置模块builtins的引用作为__builtins__键的值
- 默认为
locals- 局部命名空间字典- 默认为
None,即使用globals作为locals - 如果
globals也为None则使用当前环境的局部命名空间
- 默认为
返回值
表达式的执行结果。
#示例
# 运行表达式
print(eval('1 + 1'))
# 使用当前的命名空间
x = 233
print(eval('x + 1'))
# 使用 globals 参数传入命名空间
print(eval('x + 1', globals={'x': 666}))
#注意事项
eval可以执行任意代码,存在严重的安全风险,永远不要直接执行不可信来源的输入eval的执行速度比直接执行代码慢,频繁地调用会显著影响性能- 在需要限制执行环境时,应该提供
globals和locals字典 - 解析数据时,更安全的替代方案包括
ast.literal_eval()或 JSON