📜  Python中的求值函数 eval(1)

📅  最后修改于: 2023-12-03 15:19:30.788000             🧑  作者: Mango

Python中的求值函数eval

在Python中,eval()函数是一个内置函数用于将字符串作为代码执行。它允许我们在程序中动态地计算和计算表达式。对于需要处理用户输入或者动态代码执行场景的开发者而言,这是一个非常有用的工具。

语法
eval(expression, globals=None, locals=None)
  • expression: 必选参数,表示要计算的表达式或Python代码字符串。
  • globals: 可选参数,表示全局命名空间,如果提供了该参数,那么表达式中用到的全局变量将从该命名空间中获取。
  • locals: 可选参数,表示局部命名空间,如果提供了该参数,那么表达式中用到的局部变量将从该命名空间中获取。
示例
计算字符串表达式
>>> num = eval("2 + 3")
>>> print(num)
5
计算包含变量名的字符串表达式
>>> a = 2
>>> b = 3
>>> result = eval("a + b")
>>> print(result)
5
计算包含函数调用的字符串表达式
>>> def add_num(a, b):
...     return a + b
...
>>> result = eval("add_num(2, 3)")
>>> print(result)
5
计算包含特殊字符的字符串表达式
>>> a = 2
>>> b = 3
>>> result = eval("a * b + 5 / 2 - 1")
>>> print(result)
7.5
使用globals参数获取全局变量
>>> a = 2
>>> b = 3
>>> result = eval("a + b", globals())
>>> print(result)
5
使用locals参数获取局部变量
>>> def sum_num(a, b):
...     result = eval("a + b", locals())
...     return result
...
>>> print(sum_num(2, 3))
5

需要注意的是,使用eval()函数时需要确保表达式或代码字符串来自可信任的来源,否则可能会产生安全隐患。因为eval()运行任何字符串都会当作Python代码来执行,包括恶意的代码,所以一定要谨慎使用。