python 中的 eval
eval() 函数在 Python 中用于动态执行字符串作为 Python 表达式或语句。它将字符串作为输入,并将其作为代码执行,返回执行的结果。
用途
eval() 函数主要用于以下场景:
- 动态生成代码,例如,根据用户输入创建代码片段。
- 执行来自外部源(如网络请求或数据库)的字符串表达式。
- 使用字符串操作灵活地修改代码的结构或执行逻辑。
语法
eval() 函数的语法如下:
eval(expression[, globals[, locals]])
其中:
- expression:要执行的字符串表达式或语句。
- globals(可选):执行期间使用的全局名称空间字典。
- locals(可选):执行期间使用的局部名称空间字典。
使用示例
以下示例展示了如何使用 eval() 函数:
# 计算字符串表达式
result = eval("10 + 20")
print(result) # 输出:30
# 执行字符串语句
eval("print('Hello, world!')") # 输出:Hello, world!
# 使用 globals 和 locals 控制名称空间
globals_dict = {'x': 10}
eval("x += 1", globals_dict) # 等价于 globals_dict['x'] += 1
注意事项
使用 eval() 函数时需要特别注意以下几点:
- eval() 函数不检查字符串的安全性,因此恶意字符串可能导致代码注入攻击。
- 确保执行的字符串是可信任的,否则它可能执行意外或有害的操作。
- 如果不指定 globals 和 locals,则 eval() 将在当前的全局和局部名称空间中执行。