python内置函数exec详解

exec函数功能作用

python内置函数exec支持动态执行python代码,传入exec函数的object实参可以是字符串,也可以是字节码对象。如果object实参是字符串则会被exec函数编译并执行,如果是字节码对象则会被直接执行。通常exec配合compile函数来使用。

exec函数语法

exec(object[, globals[, locals]])

参数

  • object 可以是字符串或者字节码对象
  • globals 可选参数,如果提供了必须是字典对象,若不提供,则使用当前作用域里的globals
  • locals 可选参数,任意字典映射对象

一旦提供了globals 和 locals, 代码执行起来就像嵌入到某个类定义中一样

返回值

示例代码

object实参是字符串

exec("print('ok')")     # ok
exec("4 + 5")

虽然字符串"4 + 5" 也能被exec执行,但并没有返回结果,这一点一定要注意

object实参是字节码

>>> exp = "3*3 + 7 + 8"                    
>>> code = compile(exp, '<string>', 'eval')
>>> code
<code object <module> at 0x2b9c88626ed0, file "<string>", line 1>
>>> eval(exp)
24

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案