Python eval() 函数



Python eval() 函数是一个内置函数,用于将字符串作为 Python 表达式进行计算并返回结果。它采用包含有效 Python 表达式的字符串作为输入,对其进行解析并执行代码,最终返回表达式的结果。

语法

以下是 Python eval() 函数的语法 -


 eval(expression, globals=None, locals=None)

参数

此函数采用如下所示的参数 -

  • expression −它是一个字符串,表示您要计算的有效 Python 表达式。
  • globals (可选) −它是一个包含全局变量的字典。如果未提供或设置为 None,则使用调用方的 globals 命名空间。
  • locals(可选)−它是一个包含局部变量的字典。如果未提供或设置为 None,则它使用调用方的 locals 命名空间。

返回值

此函数返回计算表达式的结果。

示例 1

在下面的示例中,我们使用 eval() 函数来计算简单表达式 “2 + 3”,它表示一个简单的加法 -


expression = "2 + 3"
result = eval(expression)
print('The evaluated expression obtained is:',result)

输出

以下是上述代码的输出 -

The evaluated expression obtained is: 5

示例 2

在这里,我们使用 eval() 函数来计算二次公式 “x2 + 3x + 5” 的结果,其中 “x” 设置为 “2” −


formula = "x**2 + 3*x + 5"
x_value = 2
result = eval(formula, {'x': x_value})
print('The evaluated expression obtained is:',result)

输出

上述代码的输出如下 -

The evaluated expression obtained is: 15

示例 3

我们可以使用 eval() 函数来访问全局变量和局部变量。

在这里,我们使用 eval() 函数来计算 “global_var” 和 “local_var” 之和 -


global_var = 10
local_var = 5
expression = "global_var + local_var"
result = eval(expression, {'global_var': global_var}, {'local_var': local_var})
print('The evaluated expression obtained is:',result)

输出

获得的结果如下所示 -

The evaluated expression obtained is: 15

示例 4

在这种情况下,我们使用列表推导式为范围内的数字生成一个方块列表 “0 到 4”。之后,我们使用 eval() 函数计算表达式以获得结果 -


list_expression = "[x**2 for x in range(5)]"
result = eval(list_expression)
print('The evaluated expression obtained is:',result)

输出

以下是上述代码的输出 -

The evaluated expression obtained is: [0, 1, 4, 9, 16]

示例 5

在此示例中,我们定义了一个名为 “custom_function” 的函数,该函数采用参数 'x' 并计算二次表达式。然后,我们创建一个名为 “expression” 的字符串变量,其中包含参数为 '3' 的函数调用。为了计算表达式,我们使用 eval() 函数,将函数及其参数提供给 globals() 字典,其中包括全局变量,以及包含自定义函数 - 的字典 -


def custom_function(x):
	 	return x**2 + 2*x + 1
expression = "custom_function(3)"
result = eval(expression, globals(), {'custom_function': custom_function})
print('The evaluated expression obtained is:',result)

输出

生成的结果如下 -

The evaluated expression obtained is: 16