Python 中的exec()函数用于动态执行 Python 代码;它接受一个包含 Python 代码的字符串作为参数,并将其作为 Python 程序执行。

函数语法

exec(object, globals=None, locals=None)

参数:

  • object:可以是包含 Python 代码的字符串、代码对象或者是一个已经打开的文件对象;
  • globalslocals:可选参数,用于指定代码执行时的全局命名空间和局部命名空间;

exec()函数执行的代码具有完全的权限,可以访问和修改所有的 Python 对象和命名空间,因此在使用exec()函数时需要特别小心,以避免安全问题。

命名空间和安全性问题请参考:

exec()函数会将指定的 Python 代码动态地编译并执行。如果object参数是一个字符串,exec()函数会将其解析为一组 Python 语句,并将其编译为可执行的字节码对象;然后,它会在指定的命名空间中执行这些语句。如果object参数是一个代码对象,exec()函数会直接执行该对象表示的代码。如果object参数是一个文件对象,exec()函数会从文件中读取代码并执行。

exec() 函数示例

执行一个字符串中的 Python代 码:

code = "print('Hello, World!')"
exec(code)

执行一个代码对象表示的 Python 代码:

code_obj = compile("print('Hello, World!')", "<string>", "exec")
exec(code_obj)

从文件中读取 Python 代码并执行:

with open("test.py") as f:
    code = f.read()
exec(code)