Python 中 eval 函数的神奇用法

Python 中 Eval 函数的用法

eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果。所以,结合math当成一个计算器很好用。

eval()函数常见作用有:

1、计算字符串中有效的表达式,并返回结果

Python
Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) Type 'copyright', 'credits' or 'license' for more information IPython 7.4.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: eval('1+1') Out[1]: 2 In [2]: eval('pow(2,2)') Out[2]: 4 In [3]: n = 10 In [4]: eval('n+1') Out[4]: 11 In [11]: def hello(): ...: print('hello') ...: In [12]: eval('hello()') hello In [13]: eval('hello')() hello
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Python 3.6.8 | Anaconda , Inc . | ( default , Dec 29 2018 , 19 : 04 : 46 )
Type 'copyright' , 'credits' or 'license' for more information
IPython 7.4.0 -- An enhanced Interactive Python . Type '?' for help .
 
In [ 1 ] : eval ( '1+1' )
Out [ 1 ] : 2
 
In [ 2 ] : eval ( 'pow(2,2)' )
Out [ 2 ] : 4
 
In [ 3 ] : n = 10
 
In [ 4 ] : eval ( 'n+1' )
Out [ 4 ] : 11
 
In [ 11 ] : def hello ( ) :
     . . . :      print ( 'hello' )
     . . . :
 
In [ 12 ] : eval ( 'hello()' )
hello
 
In [ 13 ] : eval ( 'hello' ) ( )
hello
 
 

2、将字符串转成相应的对象(如list、tuple、dict和string之间的转换)

Python
>>> a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]" >>> b = eval(a) >>> b [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]] >>> a = "{1:'xx',2:'yy'}" >>> c = eval(a) >>> c {1: 'xx', 2: 'yy'} >>> a = "(1,2,3,4)" >>> d = eval(a) >>> d (1, 2, 3, 4)
1
2
3
4
5
6
7
8
9
10
11
12
13
>>> a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>> b = eval ( a )
>>> b
[ [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] , [ 7 , 8 ] , [ 9 , 0 ] ]
>>> a = "{1:'xx',2:'yy'}"
>>> c = eval ( a )
>>> c
{ 1 : 'xx' , 2 : 'yy' }
>>> a = "(1,2,3,4)"
>>> d = eval ( a )
>>> d
( 1 , 2 , 3 , 4 )
 

3、将利用反引号转换的字符串再反转回对象

Python
>>> list1 = [1,2,3,4,5] >>> `list1` '[1, 2, 3, 4, 5]' >>> type(`list1`) <type 'str'> >>> type(eval(`list1`)) <type 'list'> >>> a = eval(`list1`) >>> a [1, 2, 3, 4, 5]
1
2
3
4
5
6
7
8
9
10
11
>>> list1 = [ 1 , 2 , 3 , 4 , 5 ]
>>> ` list1 `
'[1, 2, 3, 4, 5]'
>>> type ( ` list1 ` )
< type 'str' >
>>> type ( eval ( ` list1 ` ) )
< type 'list' >
>>> a = eval ( ` list1 ` )
>>> a
[ 1 , 2 , 3 , 4 , 5 ]
 



  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值