一、eval()函數(shù)是什么?
Python
的一個(gè)內(nèi)置函數(shù);
返回傳入字符串的表達(dá)式結(jié)果(官方)
二、eval()函數(shù)語法解析
三、eval()函數(shù)應(yīng)用舉例
3.1 eval()基本應(yīng)用舉例
上述例子中,展示了eval()的3個(gè)應(yīng)用:
-
把字符串轉(zhuǎn)化為代碼表達(dá)式求結(jié)果,如
66+72
- 把字符串轉(zhuǎn)化為其它數(shù)據(jù)類型,如字典、列表、元組、集合等
-
傳遞
globals
參數(shù)和locals
參數(shù),當(dāng)兩個(gè)參數(shù)都存在時(shí),先查找locals
參數(shù),再查找globals
參數(shù),locals
參數(shù)中同名變量會覆蓋globals
中的變量
3.2 eval()危害舉例
上述例子中,eval()
將字符串轉(zhuǎn)成表達(dá)式并執(zhí)行,就可以利用其執(zhí)行系統(tǒng)命令,刪除文件等操作。
3.3 ast.literal_eval()替代eval()實(shí)現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換
上述代碼也能完成類型轉(zhuǎn)換,但由于沒有使用eval()
,所以產(chǎn)生的安全風(fēng)險(xiǎn)較小。
literal_eval()
函數(shù):會判斷需要計(jì)算的內(nèi)容計(jì)算后是不是合法的python
類型,如果是則進(jìn)行運(yùn)算,否則就不進(jìn)行運(yùn)算。
總結(jié):
到此這篇關(guān)于python eval()
函數(shù)使用詳情的文章就介紹到這了,更多相關(guān)python eval()
函數(shù)使用內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://zhuanlan.zhihu.com/p/193129156