前言:
如今我们对“eval在python中的用法”都比较注重,我们都需要剖析一些“eval在python中的用法”的相关文章。那么小编在网上搜集了一些对于“eval在python中的用法””的相关内容,希望咱们能喜欢,各位老铁们一起来了解一下吧!Python eval()
eval()的语法为:
eval(expression, globals=None, locals=None)
eval()参数解读:
eval()函数有三个参数:
expression #解析Python表达式的字符串globals(可选参数)#是一个字典locals(可选参数)#映射对象。,因为字典是Python中标准的映射类型。
稍后将在本节中说说全局变量和局部变量的使用。
从eval()返回值
示例1--从eval()方法返回从表达式求值的结果,我们看一个示例:
x = 1print(eval('x + 1'))
输出:
2
在上面示例当中,eval()函数对表达式x +1求值,并打印值。
示例2:eval()的实际示例操作:
def calculatePerimeter(l): return 4*ldef calculateArea(l): return l*lexpression = input("Type a function: ")for l in range(1, 5): if (expression == 'calculatePerimeter(l)'): print("If length is ", l, ", Perimeter = ", eval(expression)) elif (expression == 'calculateArea(l)'): print("If length is ", l, ", Area = ", eval(expression)) else: print('Wrong Function') break
输出:
Type a function: calculateArea(l)If length is 1 , Area = 1If length is 2 , Area = 4If length is 3 , Area = 9If length is 4 , Area = 16
使用eval()时的注意事项:
考虑一下我们使用Unix系统(比如macOS,Linux等)并且已经导入os模块的情况。 os模块提供了一种可移植的方式来使用操作系统功能,例如读取或写入文件。
如果允许我们使用eval(input())输入值,则可以发出命令来更改文件,甚至使用以下命令删除所有文件:os.system('rm -rf *')
如果在我们的代码中使用了eval(input())方法,那么就最好检查一下,我们可以使用哪些变量和方法。 我们可以使用dir()方法查看哪些变量和方法可用。操作如下:
from math import *print(eval('dir()'))
输出:
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'os', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
标签: #eval在python中的用法