| title | Python exec() 内置函数 - Python 速查表 |
|---|---|
| description | 此函数支持动态执行 Python 代码。object 必须是字符串或代码对象。如果是字符串,则将其解析为 Python 语句套件并执行(除非发生语法错误)[...]。 |
Python 中的 exec() 函数是一个内置函数,它允许您动态执行存储在字符串中的 Python 代码。这对于您希望执行用户提供的代码、在运行时生成和运行代码,甚至在应用程序中构建迷你解释器或脚本环境的场景非常强大。但是,应谨慎使用,因为它如果处理不当,可能会引入安全风险。
exec(object[, globals[, locals]])object: 包含要执行的 Python 代码的字符串。globals(可选): 表示全局命名空间的字典。如果未提供,则使用当前的全局命名空间。locals(可选): 表示局部命名空间的字典。如果未提供,则使用当前的局部命名空间。
code_to_execute = "print('Hello, exec()!')"
exec(code_to_execute)Hello, exec()!
exec() 函数也可以与 print() 函数一起使用,将输出显示到控制台。
code = """
for i in range(5):
print(i)
"""
exec(code)0
1
2
3
4
在此示例中,exec() 函数用于执行一个 for 循环,该循环迭代一个数字的 range 并将每个数字 打印 到控制台。
x = 10
code = "x += 5"
exec(code)
print(x)15
x = 5
code = "x = x * 2"
globals_dict = {"x": 10}
locals_dict = {"x": 20}
exec(code, globals_dict, locals_dict)
print(x)
print(globals_dict)
print(locals_dict)5
{'x': 10}
{'x': 40}
def create_dynamic_function(name, args):
code = f"def {name}({', '.join(args)}): return sum({args})"
exec(code)
create_dynamic_function("add_numbers", ["a", "b", "c"])
result = add_numbers(2, 3, 5)
print(result)10
在此示例中,exec() 函数用于创建一个动态函数,该函数接受参数列表并返回它们的 和。
code = """
try:
print(undefined_variable)
except NameError as e:
print(f"Error: {e}")
"""
exec(code)Error: name 'undefined_variable' is not defined
user_input = input("Enter code to execute: ")
exec(user_input) # Caution: This can be a security risk if not properly sanitized.compile()eval()globals()locals()- 异常处理
- 调试