python eval()函数使用
生活随笔
收集整理的這篇文章主要介紹了
python eval()函数使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、eval()函數是什么?
Python的一個內置函數;
返回傳入字符串的表達式結果(官方)
二、eval()函數語法解析
eval(expression[, globals[, locals]])# expression : 表達式。 # globals : 變量作用域,全局命名空間,如果被提供,則必須是一個字典對象。 # locals : 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。三、eval()函數應用舉例
3.1 eval()基本應用舉例
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' print(eval('66+72')) # 把字符串解析成66+72的結果 print( eval("{'name':'linux','age':18}") ) # 把字符串轉為字典 print( eval("[[1,2], [3,4], [5,6], [7,8], [9,0]]") ) # 把字符串轉為列表 print(eval("{'name':'linux','age':age}",{"age":18})) # 傳遞globals參數值為{“age”:18}age=18 print(eval("{'name':'linux','age':age}",{"age":20},locals())) # 傳遞locals參數上述例子中,展示了eval()的3個應用:
- 把字符串轉化為代碼表達式求結果,如 66+72
- 把字符串轉化為其它數據類型,如字典、列表、元組、集合等
- 傳遞globals參數和locals參數,當兩個參數都存在時,先查找locals參數,再查找globals參數,locals參數中同名變量會覆蓋globals中的變量
3.2 eval()危害舉例
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' str1 = "__import__('os').system('rm -rf ./a.txt')" # 刪除當前目錄下的a.txt文件 eval( str1 ) str2 = "__import__('os').system('ls')" # 顯示當前代碼路徑下的所有代碼文件名稱 eval( str2 )上述例子中,eval()將字符串轉成表達式并執行,就可以利用其執行系統命令,刪除文件等操作。
3.3 ast.literal_eval()替代eval()實現數據類型轉換
import astprint( ast.literal_eval("{'name':'linux','age':18}") ) print( ast.literal_eval("[[1,2], [3,4], [5,6], [7,8], [9,0]]") )上述代碼也能完成類型轉換,但由于沒有使用eval(),所以產生的安全風險較小。
literal_eval() 函數:會判斷需要計算的內容計算后是不是合法的python類型,如果是則進行運算,否則就不進行運算。
總結
以上是生活随笔為你收集整理的python eval()函数使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python selenium对浏览器
- 下一篇: python自带的Mock模块使用