最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PYTHON EVAL的用法及注意事項解析

 更新時間:2019年09月06日 14:15:38   作者:桂木  
這篇文章主要介紹了PYTHON EVAL的用法及注意事項解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

前言

eval是Python的一個內(nèi)置函數(shù),這個函數(shù)的作用是,返回傳入字符串的表達式的結(jié)果。想象一下變量賦值時,將等號右邊的表達式寫成字符串的格式,將這個字符串作為eval的參數(shù),eval的返回值就是這個表達式的結(jié)果。

python中eval函數(shù)的用法十分的靈活,但也十分危險,安全性是其最大的缺點。本文從靈活性和危險性兩方面介紹eval。

1、強大之處

舉幾個例子感受一下,字符串與list、tuple、dict的轉(zhuǎn)化。

a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
b = eval(a)
b
Out[3]: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
type(b)
Out[4]: list
a = "{1: 'a', 2: 'b'}"
b = eval(a)
b
Out[7]: {1: 'a', 2: 'b'}
type(b)
Out[8]: dict
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
b = eval(a)
b
Out[11]: ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0)) 

eval的語法格式如下:

eval(expression[, globals[, locals]])

強大吧,給個字符串給eval,eval給你一個表達式返回值。

globals : 變量作用域,全局命名空間,如果被提供,則必須是一個字典對象。expression : 字符串

locals : 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。

結(jié)合globals和locals看看幾個例子

傳遞globals參數(shù)值為{“age”:1822},

eval("{'name':'linux','age':age}",{"age":1822})

輸出結(jié)果

eval("{'name':'linux','age':age}",{"age":1822}) 

再加上locals變量

eval("{'name':'linux','age':age}",{"age":1822},locals())

當兩個參數(shù)都不為空時,先查找locals參數(shù),再查找globals參數(shù),locals參數(shù)中同名變量會覆蓋globals中的變量。根據(jù)上面兩個例子可以看到當locals參數(shù)為空,globals參數(shù)不為空時,查找globals參數(shù)中是否存在變量,并計算。

2、危險之處

eval雖然方便,但是要注意安全性,可以將字符串轉(zhuǎn)成表達式并執(zhí)行,就可以利用執(zhí)行系統(tǒng)命令,刪除文件等操作。

假設用戶惡意輸入。比如:

eval("__import__('os').system('ls /home/pythontab.com/www/')") 

那么eval()之后,你會發(fā)現(xiàn),當前文件夾文件都會展如今用戶前面。這句其實相當于執(zhí)行了

os.system('ls /home/pythontab.com/www/')

那么繼續(xù)輸入:

eval("__import__('os').system('cat /home/pythontab.com/www/test.sql')")

代碼都給人看了。

再來一條刪除命令,文件消失。比如

eval("__import__('os').system('rm /home/pythontab.com/www/test.data')")

所以使用eval,一方面享受他的了靈活性同時,也要注意安全性。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一份python入門應該看的學習資料

    一份python入門應該看的學習資料

    關(guān)于python入門你應該看這些資料,幫助你快速入門python,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 解讀Python中字典的key都可以是什么

    解讀Python中字典的key都可以是什么

    這篇文章主要介紹了解讀Python中字典的key都可以是什么,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Python列表推導式、字典推導式與集合推導式用法實例分析

    Python列表推導式、字典推導式與集合推導式用法實例分析

    這篇文章主要介紹了Python列表推導式、字典推導式與集合推導式用法,結(jié)合實例形式分析了Python三種推導式的概念、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2018-02-02
  • python讀取與寫入csv格式文件的示例代碼

    python讀取與寫入csv格式文件的示例代碼

    本篇文章主要介紹了python讀取與寫入csv格式文件的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 在Python中畫圖(基于Jupyter notebook的魔法函數(shù))

    在Python中畫圖(基于Jupyter notebook的魔法函數(shù))

    這篇文章主要介紹了在Python中畫圖(基于Jupyter notebook的魔法函數(shù)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 淺談Python中的正則表達式

    淺談Python中的正則表達式

    正則表達式廣泛用于與文字、字符串的格式化,放到Python里使用,再合適不過.尤其是在編寫爬蟲時,用正則表達式匹配URL、匹配IP等,正則表達式都是一個簡單、高效的選擇,需要的朋友可以參考下
    2021-06-06
  • python snownlp情感分析簡易demo(分享)

    python snownlp情感分析簡易demo(分享)

    下面小編就為大家?guī)硪黄猵ython snownlp情感分析簡易demo(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Python變量作用域LEGB用法解析

    Python變量作用域LEGB用法解析

    這篇文章主要介紹了Python變量作用域LEGB用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Django發(fā)送郵件功能實例詳解

    Django發(fā)送郵件功能實例詳解

    在本篇文章里小編給大家整理了關(guān)于Django發(fā)送郵件功能的詳細內(nèi)容,有需要的朋友們可以參考學習下。
    2019-09-09
  • Python通過字典映射函數(shù)實現(xiàn)switch

    Python通過字典映射函數(shù)實現(xiàn)switch

    這篇文章主要介紹了Python通過字典映射函數(shù)實現(xiàn)switch,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11

最新評論

通辽市| 大同县| 娄烦县| 资溪县| 洛隆县| 奉节县| 渝北区| 津市市| 通河县| 明溪县| 三明市| 开原市| 屯留县| 砀山县| 绥化市| 彭州市| 麻城市| 铅山县| 乐山市| 株洲县| 玉环县| 郎溪县| 大安市| 政和县| 吕梁市| 金阳县| 吴江市| 新竹县| 达州市| 卫辉市| 黄龙县| 福鼎市| 扬州市| 红河县| 绩溪县| 汕头市| 稷山县| 永胜县| 福鼎市| 织金县| 龙胜|