当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python eval用法及代码示例


用法:

eval(expression[, globals[, locals]])

参数是字符串和可选的全局变量和局部变量。如果提供,globals 必须是字典。如果提供,locals 可以是任何映射对象。

expression 参数被解析和评估为 Python 表达式(技术上讲,条件列表),使用 globalslocals 字典作为全局和本地命名空间。如果存在 globals 字典并且不包含键 __builtins__ 的值,则在解析 expression 之前,在该键下插入对内置模块 builtins 的字典的引用。这样,您可以通过将自己的 __builtins__ 字典插入到 globals 中,然后再将其传递给 eval() 来控制哪些内置函数可用于执行的代码。如果省略 locals 字典,则默认为 globals 字典。如果省略两个字典,则在调用eval() 的环境中使用globalslocals 执行表达式。请注意,eval() 无权访问封闭环境中的嵌套范围(非本地)。

返回值是计算表达式的结果。语法错误被报告为异常。例子:

>>> x = 1
>>> eval('x+1')
2

此函数还可用于执行任意代码对象(例如由 compile() 创建的代码对象)。在这种情况下,传递一个代码对象而不是一个字符串。如果代码对象已使用 'exec' 作为 mode 参数进行编译,则 eval() 的返回值将为 None

提示:exec() 函数支持动态执行语句。 globals()locals() 函数分别返回当前的全局和本地字典,这对于传递以供 eval()exec() 使用可能很有用。

如果给定的源是一个字符串,那么前导和尾随空格和制表符将被去除。

请参阅ast.literal_eval(),了解可以使用仅包含文字的表达式安全地评估字符串的函数。

使用代码对象作为参数引发审计事件exec。也可能引发代码编译事件。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 eval。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。