exec() 函数执行指定的 Python 代码。
exec() 函数接受大量代码块,这与 eval() 函数仅接受单个表达式不同。
exec(object, globals, locals)
- object:必选参数,表示需要被指定的Python代码。它必须是字符串或code对象(可以通过compile函数创建)。如果object是一个字符串,该字符串会先被解析为一组Python语句,然后在执行(除非发生语法错误)。如果object是一个code对象,那么它只是被简单的执行。
- globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
- locals:可选参数,表示当前局部命名空间(存放局部变量),如果该参数被忽略,那么它将会取与globals相同的值。
- 如果globals与locals都被忽略,那么它们将取exec()函数被调用环境下的全局命名空间和局部命名空间。
所谓全局变量和局部变量,都是相对与object而言,在object内定义的变量为局部变量,在object之外定义的变量为全局变量。
d = 4 #相对要执行的代码而言,d为全局变量
locals = {'c': 3} # 还可以提前赋值
exec('a=1\nb=2', {}, locals)
print(locals)
#输出
{'c': 3, 'a': 1, 'b': 2}