Python eval() 函数

Python3 内置函数 Python3 内置函数


eval() 是 Python 中用于执行字符串中的 Python 表达式的内置函数。

eval() 接收一个字符串,将其作为 Python 代码来执行,并返回执行结果。它是一个强大的功能,但使用不当会带来安全风险。

单词释义evalevaluate(求值)的缩写。


基本语法与参数

语法格式

eval(expression, globals, locals)

参数说明

  • 参数 expression
    • 类型: 字符串
    • 描述: 要执行的 Python 表达式。
  • 参数 globals(可选):
    • 类型: 字典
    • 描述: 全局命名空间。
  • 参数 locals(可选):
    • 类型: 字典
    • 描述: 局部命名空间。

函数说明

  • 返回值: 返回表达式的执行结果。
  • 安全警告: 不要对不可信的输入使用 eval(),可能导致代码注入攻击。

实例

示例 1:基础用法

实例

# 计算数学表达式
result = eval("1 + 2 + 3")
print(result)  # 输出: 6

# 使用变量
x = 10
result = eval("x * 2")
print(result)  # 输出: 20

# 复杂表达式
result = eval("2 ** 3 + 4 * 5")
print(result)  # 输出: 28

# 函数调用
result = eval("len('hello')")
print(result)  # 输出: 5

运行结果预期:

6
20
28
5

代码解析:

  1. eval() 可以执行算术表达式。
  2. 可以引用已定义的变量。
  3. 可以调用内置函数。

示例 2:受限环境

实例

# 限制可用的函数和变量
x = 10
y = 20

# 创建一个受限的全局字典
safe_dict = {"x": x, "y": y, "abs": abs}

result = eval("x + y", safe_dict)
print(result)  # 输出: 30

# 不允许访问危险函数
try:
    eval("__import__('os').system('ls')", {})
except NameError as e:
    print(f"安全限制: {e}")

运行结果预期:

30
安全限制: name '__import__' is not defined

这个例子展示了如何通过限制 globals 字典来提高 eval() 的安全性。


Python3 内置函数 Python3 内置函数