Python eval() 函数

Python3 内置函数

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

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

单词释义: eval 是 evaluate(求值)的缩写。

基本语法与参数

语法格式

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

代码解析:

eval() 可以执行算术表达式。

可以引用已定义的变量。

可以调用内置函数。

示例 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 内置函数