国际访客建议访问 Primers 编程伙伴 国际版站点 > Python 教程 > eval 以获得更好的体验。

# Python 的内置函数 eval

请查看 Python 内建函数列表 了解更多相关 API。

说明:执行表达式并返回结果。

# 函数说明

def eval(source:str|codeobject, /, globals:dict=None, locals:mapping=None):
    '''
    执行表达式并返回结果

    :param source: Python 表达式
    :param globals : 全局命名空间字典
    :param locals : 局部命名空间字典
    :return: 表达式的求值结果
    '''

!subtitle:说明

执行表达式并返回结果。

!subtitle:参数

  • source - 字符串形式的 Python 表达式,或者是代码对象

  • globals - 全局命名空间字典

    • 默认为 None,即使用当前环境的全局命名空间

    • 如果不包含 __builtins__ 键,则自动插入内置模块 builtins 的引用作为 __builtins__ 键的值

  • locals - 局部命名空间字典

    • 默认为 None,即使用 globals 作为 locals

    • 如果 globals 也为 None 则使用当前环境的局部命名空间

!subtitle:返回值

表达式的执行结果。

# 示例

运行示例

# 运行表达式
print(eval('1 + 1'))

# 使用当前的命名空间
x = 233
print(eval('x + 1'))

# 使用 globals 参数传入命名空间
print(eval('x + 1', globals={'x': 666}))

# 注意事项

  • eval 可以执行任意代码,存在严重的安全风险,永远不要直接执行不可信来源的输入

  • eval 的执行速度比直接执行代码慢,频繁地调用会显著影响性能

  • 在需要限制执行环境时,应该提供 globalslocals 字典

  • 解析数据时,更安全的替代方案包括 ast.literal_eval() 或 JSON

# 推荐阅读

本文 更新于: 2025-11-27 09:37:59 创建于: 2025-11-27 09:37:59