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

python的exec、eval使用分析

 更新時間:2017年12月11日 10:10:22   投稿:mengwei  
這篇文章主要介紹了python的exec、eval使用分析,具有一定借鑒價值,需要的朋友可以參考下。

簡介

python 動態(tài)執(zhí)行字符串代碼片段(也可以是文件), 一般會用到exec,eval。

exec

exec_stmt ::= "exec" or_expr ["in" expression ["," expression]]

注意:exec 是一個語法聲明,不是一個函數(shù).也就是說和if,for一樣.

官方文檔對于exec的解釋

This statement supports dynamic execution of Python code.

exec的第一個表達式可以是:

1.代碼字符串
2.文件對象
3.代碼對象
4.tuple

前面三種情況差不多,第四種比較特殊最后講

如果忽略后面的可選表達式,exec后面代碼將在當(dāng)前域執(zhí)行

>>> a=2
>>> exec "a=1"
>>> a
>>> 

如果在表達式之后使用in選項指定一個dic,它將作為global和local變量作用域

>>> a=10
>>> b=20
>>> g={'a':6,'b':8}
>>> exec "global a;print a,b" in g
>>>

如果in后詳指定兩個表達式,它們將分別用作global和local變量作用域

>>> a=10
>>> b=20
>>> c=20
>>> g={'a':6,'b':8}
>>> l={'b':9,'c':10}
>>> exec "global a;print a,b,c" in g,l
>>>

現(xiàn)在說下tuple的情況,這也是導(dǎo)致很多人誤以為exec是一個函數(shù)的原因。

如果第一個表達式是tuple

exec(expr, globals) #它等效與 exec expr in globals
exec(expr, globals, locals) #它等效與 exec expr in globals,locals

eval

eval通常用來執(zhí)行一個字符串表達式,并返回表達式的值。

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

有三個參數(shù),表達式字符串,globals變量作用域,locals變量作用域。 其中第二個和第三個參數(shù)是可選的。

如果忽略后面兩個參數(shù),則eval在當(dāng)前作用域執(zhí)行。

>>> a=1
>>> eval("a+1")
>>>

如果指定globals參數(shù)

>>> a=1
>>> g={'a':10}
>>> eval("a+1",g)
>>>

如果指定locals參數(shù)

>>> a=10
>>> b=20
>>> c=20
>>> g={'a':6,'b':8}
>>> l={'b':9,'c':10}
>>> eval("a+b+c",g,l)
>>>

如果要嚴格限制eval執(zhí)行,可以設(shè)置globals為__builtins__,這樣 這個表達式只可以訪問__builtin__ module。

總結(jié)

exec,eval給我?guī)砹藰O大的靈活性,同時也帶來了隱含的危險性, 當(dāng)我們使用它們的時候應(yīng)該總是記得詳細指定其執(zhí)行的作用域。

以上就是本文關(guān)于python的exec、eval使用分析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

Python中eval帶來的潛在風(fēng)險代碼分析

Python驗證文件是否可讀寫代碼分享

Python文件操作基本流程代碼實例

如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • Python容器類型使用新手必讀

    Python容器類型使用新手必讀

    本文將介紹一些Python容器類型的使用小技巧,以便更高效地處理數(shù)據(jù)和提升編程技能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Python常用模塊之requests模塊用法分析

    Python常用模塊之requests模塊用法分析

    這篇文章主要介紹了Python常用模塊之requests模塊用法,結(jié)合實例形式分析了Python使用requests模塊發(fā)送GET、POST請求及響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 利用Python實現(xiàn)網(wǎng)絡(luò)運維自動化的實戰(zhàn)案例

    利用Python實現(xiàn)網(wǎng)絡(luò)運維自動化的實戰(zhàn)案例

    Python作為一種簡潔而強大的編程語言,已經(jīng)成為網(wǎng)絡(luò)運維自動化的熱門選擇,本文將介紹如何利用Python實現(xiàn)網(wǎng)絡(luò)設(shè)備配置管理、監(jiān)控和故障排除等自動化任務(wù),并提供代碼示例,需要的朋友可以參考下
    2024-03-03
  • linux平臺使用Python制作BT種子并獲取BT種子信息的方法

    linux平臺使用Python制作BT種子并獲取BT種子信息的方法

    這篇文章主要介紹了linux平臺使用Python制作BT種子并獲取BT種子信息的方法,結(jié)合實例形式詳細分析了Python BT模塊的安裝及針對BT種子文件的相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • Pandas之read_csv()讀取文件跳過報錯行的解決

    Pandas之read_csv()讀取文件跳過報錯行的解決

    這篇文章主要介紹了Pandas之read_csv()讀取文件跳過報錯行的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python小波變換去噪的原理解析

    Python小波變換去噪的原理解析

    這篇文章主要介紹了Python小波變換去噪,對于去噪效果好壞的評價,常用信號的信噪比(SNR)與估計信號同原始信號的均方根誤差(RMSE)來判斷,需要的朋友可以參考下
    2021-12-12
  • Python使用稀疏矩陣節(jié)省內(nèi)存實例

    Python使用稀疏矩陣節(jié)省內(nèi)存實例

    這篇文章主要介紹了Python使用稀疏矩陣節(jié)省內(nèi)存實例,矩陣中非零元素的個數(shù)遠遠小于矩陣元素的總數(shù),并且非零元素的分布沒有規(guī)律,則稱該矩陣為稀疏矩陣,需要的朋友可以參考下
    2014-06-06
  • pandas讀取文件夾下所有excel文件的實現(xiàn)

    pandas讀取文件夾下所有excel文件的實現(xiàn)

    最近需要做一個需求,要求匯總一個文件夾所有的excel文件,所以本文就來介紹一下pandas讀取文件夾下所有excel文件的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • PyCharm安裝PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步驟詳解

    PyCharm安裝PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步驟詳解

    這篇文章主要介紹了PyCharm安裝PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步驟,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Python中DataFrame中的xs用法

    Python中DataFrame中的xs用法

    本文主要介紹了Python中DataFrame中的xs用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論

大石桥市| 钟山县| 星座| 邛崃市| 香河县| 许昌市| 西华县| 丰城市| 桃源县| 白山市| 论坛| 宣化县| 澜沧| 旺苍县| 太康县| 靖宇县| 玉树县| 镇远县| 荆州市| 东丽区| 剑阁县| 塘沽区| 重庆市| 福泉市| 达拉特旗| 张掖市| 长乐市| 尼玛县| 杭锦后旗| 保山市| 黑龙江省| 防城港市| 海兴县| 芜湖县| 富顺县| 辛集市| 铁岭市| 获嘉县| 金堂县| 伊吾县| 承德市|