python eval 函式的妙用和濫用

2022-05-01 14:54:09 字數 1146 閱讀 8811

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...