exec
是 Python 中的一个内置函数,用于执行存储在字符串或对象中的 Python 代码。它允许动态地在运行时执行代码。
函数语法
exec(object[, globals[, locals]])
参数:
object
:必需,表示要执行的代码。可以是一个字符串(包含 Python 代码)或者是一个代码对象(通常使用compile()
函数创建)。globals
:可选,是一个包含全局命名空间的字典。如果未提供,将使用当前全局命名空间。locals
:可选,是一个包含局部命名空间的字典。如果未提供,将使用当前局部命名空间。
示例代码
执行字符串形式的代码:
code_str = "print('Hello, World!')"
exec(code_str)
运行结果:
Hello, World!
使用局部和全局命名空间:
global_var = 10
local_var = 5
code_str = "result = global_var + local_var"
local_namespace = {}
exec(code_str, globals(), local_namespace)
print(local_namespace['result'])
运行结果:
15
动态创建函数:
func_code = """
def greet(name):
print(f'Hello, {name}!')
"""
exec(func_code)
greet('Alice')
运行结果:
Hello, Alice!
总结
exec
函数允许你在运行时执行动态生成的 Python 代码。它可以用于动态创建函数、执行动态生成的代码块以及在一些特殊情况下执行动态操作。然而,需要小心使用 exec
,因为它可能引入安全风险,特别是当执行的代码来自不受信任的来源时。在大多数情况下,最好考虑使用更安全的替代方法,如函数调用、条件语句等。