十python沉淀之路--eval()的用法

Posted 遥望那月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十python沉淀之路--eval()的用法相关的知识,希望对你有一定的参考价值。

一、eval函数

python eval() 函数的功能:将字符串str当成有效的表达式来求值并返回计算结果。

语法:eval(source[, globals[, locals]]) -> value

参数:

source:一个Python表达式或函数compile()返回的代码对象

globals:可选。必须是dictionary

locals:可选。任意map对象

如果提供了globals参数,那么它必须是dictionary类型;如果提供了locals参数,那么它可以是任意的map对象。

python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。我们可以用print (locals())来查看该函数体内的所有变量名和变量值。

 1 x = 1
 2 y = 1
 3 num = eval("x+y")
 4 print(num,num)
 5 
 6 def g():
 7     x = 2
 8     y = 2
 9     num1 = eval("x+y")
10     print(num1,num1)
11     num2 =eval("x+y",globals())
12     print(num2,num2)
13     num3 = eval("x+y",globals(),locals())
14     print(num3,num3)
15 
16 g()
1 num 2
2 num1 4
3 num2 2
4 num3 4

解析:num2 因为有globals所以是全局变量,执行后结果为4;num3 既有globals 又有locals,仅在此情况下,优先采用locals的值,故计算结果是2

二、eval 可以把 list, tuple, dict 转换成str,返回来也成立;即互转。

1 ###############
2 # 字符串转成列表
3 s = [[1,2,],[3,4,],[5,6,],[8,9]]
4 li = eval(s)
5 print(li)
6 print(type(s))
7 print(type(li))
1 [[1, 2], [3, 4], [5, 6], [8, 9]]
2 <class str>
3 <class list>
1 ########################
2 #字符串转成字典
3 s = "{1:‘a‘,2:‘b‘}"
4 dic = eval(s)
5 print(dic)
6 print(type(s))
7 print(type(dic))
1 {1: a, 2: b}
2 <class str>
3 <class dict>
1 ###########################
2 #字符串转成元组
3 s = ([1,2,],(3,4,),[5,6,],(8,9))
4 tu = eval(s)
5 print(tu)
6 print(type(s))
7 print(type(tu))
1 ([1, 2], (3, 4), [5, 6], (8, 9))
2 <class str>
3 <class tuple>

 

以上是关于十python沉淀之路--eval()的用法的主要内容,如果未能解决你的问题,请参考以下文章

十python沉淀之路--文件操作

十python沉淀之路--迭代器

十python沉淀之路--高阶函数初识

十python沉淀之路--map函数filter函数reduce函数匿名函数内置函数

python沉淀之路~~字符串属性(str)

javascript中eval的用法