exec 函数功能: 执行储存在字符串或文件中的 Python 语句, 相比于 eval,exec 可以执行更复杂的 Python 代码
英文解释
- This function supports dynamic execution of Python code. object must be either a string or a code object. If it is a string, the string is parsed as a suite of Python statements which is then executed (unless a syntax error occurs). If it is a code object, it is simply executed. In all cases, the code thats executed is expected to be valid as file input (see the section File input in the Reference Manual). Be aware that the return and yield statements may not be used outside of function definitions even within the context of code passed to the exec() function. The return value is None.
- In all cases, if the optional parts are omitted, the code is executed in the current scope. If only globals is provided, it must be a dictionary, which will be used for both the global and the local variables. If globals and locals are given, they are used for the global and local variables, respectively. If provided, locals can be any mapping object. Remember that at module level, globals and locals are the same dictionary. If exec gets two separate objects as globals and locals, the code will be executed as if it were embedded in a class definition.
- If the globals dictionary does not contain a value for the key __builtins__, a reference to the dictionary of the built-in module builtins is inserted under that key. That way you can control what builtins are available to the executed code by inserting your own __builtins__ dictionary into globals before passing it to exec().
注意: 在 Python2 中 exec 不是函数, 而是一个内置语句(statement), 但是 Python 2 中有一个 execfile() 函数可以理解为 Python 3 把 exec 这个 statement 和 execfile() 函数的功能够整合到一个新的 exec() 函数中去了
所以类似功能的函数在 python2 中是 execfile
适用版本
Python3.x
语法
以下是 exec 的语法:
exec(object[, globals[, locals]])
参数
object: 必选参数, 表示需要被指定的 Python 代码它必须是字符串或 code 对象如果 object 是一个字符串, 该字符串会先被解析为一组 Python 语句, 然后在执行 (除非发生语法错误) 如果 object 是一个 code 对象, 那么它只是被简单的执行
globals: 可选参数, 表示全局命名空间(存放全局变量), 如果被提供, 则必须是一个字典对象
locals: 可选参数, 表示当前局部命名空间(存放局部变量), 如果被提供, 可以是任何映射对象如果该参数被忽略, 那么它将会取与 globals 相同的值
返回值
exec 返回值永远为 None
实例>>>exec 'print"Hello Python"'
- Hello Python
- # 单行语句字符串>>> exec "print'pythontab.com'"
- pythontab.com
- # 多行语句字符串>>> exec """for i in range(5):
- ... print "iter time: %d" % i
- ... """
- iter time: 0
- iter time: 1
- iter time: 2
- iter time: 3
- iter time: 4
来源: http://www.pythontab.com/html/2018/hanshu_0319/1261.html