Python exec()函数
Python中的exec
函数用于动态执行Python代码。它接受一个包含Python代码的字符串作为参数,并将其作为Python程序执行。
exec()函数语法
exec(object, globals=None, locals=None)
其中:
object
参数可以是包含Python代码的字符串、代码对象或者是一个已打开的文件对象。globals
和locals
参数是可选的,用于指定代码执行时的全局命名空间和局部命名空间。
exec
函数会将指定的Python代码动态地编译并执行。如果object
参数是一个字符串,exec
函数会将其解析为一组Python语句,并将其编译为可执行的字节码对象。然后,它会在指定的命名空间中执行这些语句。如果object
参数是一个代码对象,exec
函数会直接执行该对象表示的代码。如果object
参数是一个文件对象,exec
函数会从文件中读取代码并执行。
需要注意的是,exec
函数执行的代码具有完全的权限,可以访问和修改所有的Python对象和命名空间,因此在使用exec
函数时需要特别小心,以避免安全问题。
exec()函数示例
以下是一些使用exec
函数的示例:
- 执行一个字符串中的Python代码:
code = "print('Hello, World!')"
exec(code)
程序运行结果
Hello, World!
globals_dict = {}
code = "x = 1\ny = 2\nprint(x + y)"
exec(code, globals_dict)
print(globals_dict['x']) # 输出 1
程序运行结果
3 1
code_obj = compile("print('Hello, World!')", "<string>", "exec")
exec(code_obj)
with open("test.py") as f:
code = f.read()
exec(code)