eval()函式十分強大,官方demo解釋為:將字串str當成有效的表示式來求值並返回計算結果:
>>> s='8*8'>>> eval(s)
64>>> eval('2+5*4')
22>>> x=1
>>> y=4
>>> eval('x+y')
5>>> eval('98.9')
98.9
>>> eval('9.9\n')
9.9>>> eval('9.9\n\t\r \t\r\n')
9.9
可以把list,tuple,dict和string相互轉化:
>>> l = "[2,3,4,5]">>> ll=eval(l)
>>> ll
[2, 3, 4, 5]
>>> type(ll)
>>> d=""
>>> dd=eval(d)
>>> type(dd)
>>> dd
>>> t='(1,2,3)'
>>> tt=eval(t)
>>> type(tt)
>>> tt
(1, 2, 3)
eval()函式功能強大,但也很危險,若程式中有以下語句:
s=raw_input('please input:')print eval(s)
下面舉幾個被惡意使用者使用的例子:
1》執行程式,如果使用者惡意輸入:
please input:__import__('os').system('dir')
則eval()之後,當前目錄檔案都會展現在使用者前面。。。
2》執行程式,如果使用者惡意輸入:
please input:open('data.py').read()
如果,當前目錄中恰好有乙個檔案,名為data.py,則惡意使用者變讀取到了檔案中的內容。。。
3》執行程式,如果使用者惡意輸入:
please input:__import__('os').system('del delete.py /q')
如果,當前目錄中恰好有乙個檔案,名為delete.py,則惡意使用者刪除了該檔案。。。
/q :指定靜音狀態。不提示您確認刪除。
python eval函式妙用
eval 函式用來執行乙個字串表示式,並返回表示式的值。以下是 eval 方法的語法 eval expression globals locals 例項1 返回表示式計算結果。x 7 eval 3 x 21 eval pow 2,2 42.可以把list,tuple,dict和string相互轉化。...
Python eval的妙用和濫用
eval 函式十分強大,官方demo解釋為 將字串str當成有效的表示式來求值並返回計算結果。so,結合math當成乙個計算器非常好用。其它使用方法,能夠把list,tuple,dict和string相互轉化。見下樣例 a 1,2 3,4 5,6 7,8 9,0 b eval a bout 3 1,...
python eval 函式的使用
1.傳入python的幾種資料型別的字串,返回相應的資料型別物件 a eval 123 print a is type a b eval a 1,b print b is type b c eval print c is type c d eval a 1,2,3 print d is type d...