exec(object[, globals[, locals]])
动态执行 Python 代码。
说明
参数 object:一个字符串的语句或者一个 compile()
函数编译过的语句的对象名称。
参数 globals:全局命名空间,用来指定执行语句时可以访问的全局命名空间;
参数 locals:局部命名空间,用来指定执行语句时可以访问的局部作用域的命名空间。
要注意本函数不会返回任何值,不管函数或语句有任何的返回值语句,比 return
或
yield
语句。
如果参数 globals 和 locals 忽略,就会使用调用时所处的命名空间。这两个参数都要求是字典形式来说明命名空间。
示例
>>> exec('print(4+44)')
48
compile
、eval
、exec
函数的区别:
compile
函数是只编译字符串代码,而不作任何的执行,但它可以编译表达式或语句。
eval
函数是只执行表达式字符串代码,而不执行语句代码。
x = eval('%d + 6' % x)
exec
函数是只执行语句代码,而不执行表达式代码,因为它没有任何返回值。