exec() 执行代码块
最后更新:2026-09-22
exec() 执行代码块
exec() 执行字符串中的 Python 代码(语句或代码块),不返回值。
| 分类 | 内置函数 |
|---|---|
| 类型 | 内置函数 |
| Python 版本 | all |
📝 语法
exec(code[, globals[, locals]])
⚙️ 参数
| code 必选 | 要执行的代码(字符串、字节串或 code 对象)。 |
|---|---|
| globals 可选 | 全局命名空间字典。(默认值:None) |
| locals 可选 | 局部命名空间字典。(默认值:None) |
返回值:无(返回 None);代码中的语句在调用方生效。
💥 异常
SyntaxError— 当代码存在语法错误时抛出。TypeError— 当 code 类型无效或 globals / locals 不是字典时抛出。
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
6
y = 6
🏷️ 相关内置函数
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Qexec('y = 1') 之后我能直接使用 y 吗?
A在模块顶层可以;但在函数内部不行,exec 里的赋值不会写进函数局部变量。安全做法是 exec(code, ns) 然后从 ns 字典里取。
Qexec() 有返回值吗?
A没有,总是返回 None;执行结果通过命名空间字典读取,如 exec('y = x * 2', ns) 后用 ns['y']。
Qexec() 和 eval() 什么时候用哪个?
A执行多行语句、定义函数用 exec;求单个表达式的值用 eval。两者的安全警告相同——都不应执行不可信输入。
Qexec 的 globals 参数怎么用?
Aexec(code, {'x': 3}) 让代码只在给定命名空间里运行,不污染外部环境,是隔离执行环境的常用手法。