十五、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'>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM