eval() 执行表达式

最后更新:2026-09-22

eval() 执行表达式

eval() 执行字符串中的 Python 表达式,返回结果。**安全警告**:不要用 eval 处理不可信输入。

分类内置函数
类型内置函数
Python 版本all

📝 语法

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

⚙️ 参数

expression 必选Python 表达式字符串(或 code 对象)。
globals 可选全局命名空间字典。(默认值:None)
locals 可选局部命名空间字典。(默认值:None)

返回值:表达式求值的结果(类型取决于表达式本身)。

💥 异常

▶ 示例

编辑下方代码,点击运行,在输出面板查看结果:

运行结果:

15
1024
⚠️ 警告 eval 可执行任意代码,生产环境请用 ast.literal_eval 替代。
更多实战案例即将上线,敬请期待。

❓ 常见问题

Qeval() 和 exec() 有什么区别?
Aeval() 只执行单个表达式并返回结果(如 eval('1 + 2') 返回 3);exec() 执行语句/代码块(if、for、def 等),返回 None。
Qeval('x = 1') 会怎样?
A抛 SyntaxError。赋值是语句不是表达式,eval() 只能求值表达式;想执行语句用 exec()。
Q为什么不能用 eval 处理用户输入?
Aeval() 能执行任意代码,如 eval("__import__('os').system('dir')") 这类字符串;解析用户输入请用 ast.literal_eval,它只处理字面量。
Qeval 里能用外部定义的变量吗?
A默认可以(使用当前全局/局部命名空间);也可通过 globals/locals 参数传入自定义命名空间,限制表达式能访问的名字。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏