Python eval()函数

Python eval()

参数说明

The eval() takes three parameters:

  • expression - this string as parsed and evaluated as a Python expression
  • globals (optional) - a dictionary
  • locals (optional)- a mapping object. Dictionary is the standard and commonly used mapping type in Python.

作用

将字符串参数当作Python代码执行,并返回执行结果。官方文档是这样说的:

The expression argument is parsed and evaluated as a Python expression

例子

In [1]: s = 'abc'
In [1]: s = 'abc'

In [2]: str(s)
Out[2]: 'abc'

In [7]: eval('x')
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-7-e5b9369fbf53> in <module>()
----> 1 eval('x')

<string> in <module>()

NameError: name 'x' is not defined

In [8]: eval('s')
Out[8]: 'abc'

字符串 s 已经定义过,执行没问题;x未定义,所以报错

疑惑

这个东西存在的意义?在stackoverflow看到了一个例子:

>>> input('Enter a number: ')
Enter a number: 3
>>> '3'
>>> input('Enter a number: ')
Enter a number: 1+1
'1+1'

>>> eval(input('Enter a number: '))
Enter a number: 1+1
2
>>>
>>> eval(input('Enter a number: '))
Enter a number: 3.14
3.14

这样区别就很明显了吧,上面的接收到的是str,下面经过eval处理后,变成了float。

注意

  • 既然能执行字符串,那os.system("rm -rf /")肯定也可以了;所以需要注意下
  • 另外两个参数的用法可见参考2

参考

https://stackoverflow.com/questions/9383740/what-does-pythons-eval-do

https://www.cnblogs.com/Xuuuuuu/p/10127029.html

https://www.programiz.com/python-programming/methods/built-in/eval

原文地址:https://www.cnblogs.com/wswang/p/12198284.html

时间: 2024-10-08 15:30:20

Python eval()函数的相关文章

python eval函数,将列表样式的字符串转化为列表

python eval函数,将列表样式的字符串转化为列表 >>> str_1 = '[1,2,3,4,5,6]'>>> type(str_1)<type 'str'>>>> list_1 = eval(str_1)>>> list_1[1, 2, 3, 4, 5, 6]>>> type(list_1)<type 'list'>>>> 原文地址:https://www.cnbl

Python eval 函数妙用

eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globals[, locals]]) -> value 参数: source:一个Python表达式或函数compile()返回的代码对象 globals:可选.必须是dictionary locals:可选.任意map对象 实例展示: 1 可以把list,tuple,dict和string相互转化. 2 ##########################################

python笔记-调用eval函数出现invalid syntax错误

本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误.源代码如下 In [2]: eval('a = 1') File "<string>", line 1 a = 1 ^ SyntaxError: invalid syntax 百度没百度到结果,最后在stackoverflow上找到了好的答案,这里是原文链接. 作者的意思是,eval函数只负责对表达式进行处理,并没有赋值的功能,也就是说,eval函数只负责对你的输入进行输出,True

python eval()内置函数

python有一个内置函数eval(),可以将字符串进行运行. 通过help(eval)查看帮助文档 Help on built-in function eval in module builtins: eval(source, globals=None, locals=None, /) Evaluate the given source in the context of globals and locals. The source may be a string representing a

(一)Python入门-5函数:07lambda表达式和匿名函数-eval()函数

一:lambda表达式和匿名函数 lambda表达式可以用来声明匿名函数.lambda 函数是一种简单的.在同一行中定义函数 的方法.lambda函数实际生成了一个函数对象. lambda表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数 的返回值. lambda表达式的基本语法如下: lambda arg1,arg2,arg3... : <表达式> arg1/arg2/arg3为函数的参数.<表达式>相当于函数体.运算结果是:表达式的运算结果. #lambd

python之eval函数,map函数,zip函数

eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果.所以,结合math当成一个计算器很好用. eval()函数常见作用有: 1.计算字符串中有效的表达式,并返回结果 >>> eval('pow(2,2)') 4 >>> eval('2 + 2') 4 >>> eval("n + 4") 85 2.将字符串转成相应的对象(如list.tuple.dict和string之间的转换) >&g

python中eval函数作用

eval函数就是实现list.dict.tuple与str之间的转化str函数把list,dict,tuple转为为字符串一.字符串转换成列表 a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]" print(type(a)) b = eval(a)print(type(b)) print(b) 二.字符串转换成字典 a = "{1: 'a', 2: 'b'}" print(type(a)) b = eval(a) print(type

python自动化之eval()函数

eval()函数说明:将字符串str当成有效的表达式来求值并返回计算结果,即将str转化为list,tuple,dict.例子: a = '[1,2,3,4]' b = '([1,2],[4],"c")' c = '{2,3,4,5}' print(eval(a),type(eval(a))) print(eval(b),type(eval(b))) print(eval(c),type(eval(c))) 输出: [1, 2, 3, 4] <class 'list'> (

Python中eval函数的作用

eval eval函数就是实现list.dict.tuple与str之间的转化str函数把list,dict,tuple转为为字符串# 字符串转换成列表a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"print(type(a))b = eval(a)print(b) # 字符串转换成字典a = "{1: 'a', 2: 'b'}"print(type(a))b = eval(a)print(type(b))print(b) # 字符