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

詳解python eval函數(shù)的妙用

 更新時間:2017年11月16日 17:14:55   投稿:zx  
這篇文章主要介紹了詳解python eval函數(shù)的妙用,詳細介紹了python eval函數(shù)的具體用法和實例,有興趣的可以了解一下

python eval函數(shù)功能:將字符串str當成有效的表達式來求值并返回計算結(jié)果。

函數(shù)定義:

eval(expression, globals=None, locals=None)

將字符串str當成有效的表達式來求值并返回計算結(jié)果。globals和locals參數(shù)是可選的,如果提供了globals參數(shù),那么它必須是dictionary類型;如果提供了locals參數(shù),那么它可以是任意的map對象。

python的全局名字空間存儲在一個叫g(shù)lobals()的dict對象中;局部名字空間存儲在一個叫l(wèi)ocals()的dict對象中。我們可以用print (locals())來查看該函數(shù)體內(nèi)的所有變量名和變量值。

Python版本兼容:

  1. Python2.7
  2. Python3.x

eval()主要作用:

1)在編譯語言里要動態(tài)地產(chǎn)生代碼,基本上是不可能的,但動態(tài)語言是可以,意味著軟件已經(jīng)部署到服務器上了,但只要作很少的更改,只好直接修改這部分的代碼,就可立即實現(xiàn)變化,不用整個軟件重新加載。
2)在machin learning里根據(jù)用戶使用這個軟件頻率,以及方式,可動態(tài)地修改代碼,適應用戶的變化。

英文解釋:

The arguments are a string and optional globals and locals. If provided, globals must be a dictionary. If provided, locals can be any mapping object.

The expression argument is parsed and evaluated as a Python expression (technically speaking, a condition list) using the globals and locals dictionaries as global and local namespace. If the globals dictionary is present and lacks ‘__builtins__', the current globals are copied into globals before expression is parsed. This means that expression normally has full access to the standard builtins module and restricted environments are propagated. If the locals dictionary is omitted it defaults to the globals dictionary. If both dictionaries are omitted, the expression is executed in the environment where eval() is called. The return value is the result of the evaluated expression. Syntax errors are reported as exceptions. Example:

例子:

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

結(jié)果:
1

例子2, 測試globals, locals

x = 1
y = 1
num1 = eval("x+y")
print (num1)
def g(): 
 x = 2 
 y = 2 
 num3 = eval("x+y") 
 print (num3)  
 num2 = eval("x+y",globals()) 
 #num2 = eval("x+y",globals(),locals()) 
 print (num2)
  
g()

num1的值是2;num3的值也很好理解,是4;num2的值呢?由于提供了globals()參數(shù),那么首先應當找全局的x和y值,也就是都為1,那么顯而易見,num2的值也是2。如果注釋掉該句,執(zhí)行下面一句呢?根據(jù)第3)點可知,結(jié)果為4

實例展示:

可以把list,tuple,dict和string相互轉(zhuǎn)化。

#################################################
字符串轉(zhuǎn)換成列表
>>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>>type(a)
<type 'str'>
>>> b = eval(a)
>>> print b
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
>>> type(b)
<type 'list'>
#################################################
字符串轉(zhuǎn)換成字典
>>> a = "{1: 'a', 2: 'b'}"
>>> type(a)
<type 'str'>
>>> b = eval(a)
>>> print b
{1: 'a', 2: 'b'}
>>> type(b)
<type 'dict'>
#################################################
字符串轉(zhuǎn)換成元組
>>> a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
>>> type(a)
<type 'str'>
>>> b = eval(a)
>>> print b
([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))
>>> type(b)
<type 'tuple'>

安全問題:

因為eval的特型, 很可能被黑客利用,造成安全問題。

怎么避免安全問題?

1、自行寫檢查函數(shù);

2、使用ast.literal_eval代替

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

相關(guān)文章

  • Django中如何使用Channels功能

    Django中如何使用Channels功能

    這篇文章主要介紹了在Django中使用Channels功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • python3模擬實現(xiàn)xshell遠程執(zhí)行l(wèi)inux命令的方法

    python3模擬實現(xiàn)xshell遠程執(zhí)行l(wèi)inux命令的方法

    今天小編就為大家分享一篇python3模擬實現(xiàn)xshell遠程執(zhí)行l(wèi)inux命令的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python爬蟲請求模塊Urllib及Requests庫安裝使用教程

    Python爬蟲請求模塊Urllib及Requests庫安裝使用教程

    requests和urllib都是Python中常用的HTTP請求庫,使用時需要根據(jù)實際情況選擇,如果要求使用簡單、功能完善、性能高的HTTP請求庫,可以選擇requests,如果需要兼容性更好、功能更加靈活的HTTP請求庫,可以選擇urllib
    2023-11-11
  • python用pyecharts畫矩形樹圖實例

    python用pyecharts畫矩形樹圖實例

    大家好,本篇文章主要講的是python用pyecharts畫矩形樹圖實例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Django 自定義404 500等錯誤頁面的實現(xiàn)

    Django 自定義404 500等錯誤頁面的實現(xiàn)

    這篇文章主要介紹了Django 自定義404 500等錯誤頁面的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • python學生管理系統(tǒng)學習筆記

    python學生管理系統(tǒng)學習筆記

    這篇文章主要為大家詳細介紹了python學生管理系統(tǒng)的學習筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 在Python中獲取兩數(shù)相除的商和余數(shù)方法

    在Python中獲取兩數(shù)相除的商和余數(shù)方法

    今天小編就為大家分享一篇在Python中獲取兩數(shù)相除的商和余數(shù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • pandas的to_datetime時間轉(zhuǎn)換使用及學習心得

    pandas的to_datetime時間轉(zhuǎn)換使用及學習心得

    這篇文章主要給大家介紹了關(guān)于pandas的to_datetime時間轉(zhuǎn)換使用及學習心得的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用pandas具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • Python爬蟲之Selenium多窗口切換的實現(xiàn)

    Python爬蟲之Selenium多窗口切換的實現(xiàn)

    這篇文章主要介紹了Python爬蟲之Selenium多窗口切換的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Python基于Matplotlib庫簡單繪制折線圖的方法示例

    Python基于Matplotlib庫簡單繪制折線圖的方法示例

    這篇文章主要介紹了Python基于Matplotlib庫簡單繪制折線圖的方法,涉及Python Matplotlib庫的相關(guān)使用技巧,需要的朋友可以參考下
    2017-08-08

最新評論

岳西县| 霍林郭勒市| 涞水县| 吉首市| 宁波市| 保亭| 多伦县| 郯城县| 玉屏| 敖汉旗| 司法| 漳州市| 鲁甸县| 原平市| 洪雅县| 苗栗县| 永泰县| 韶关市| 宝坻区| 舒城县| 竹溪县| 吴川市| 拜城县| 西青区| 布拖县| 津南区| 广元市| 科技| 城步| 牡丹江市| 松滋市| 武川县| 黄龙县| 蓬安县| 稷山县| 平远县| 九台市| 修水县| 兴安盟| 茌平县| 永川市|