亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python?eval()?函數(shù)看這一篇就夠了

 更新時間:2022年01月19日 15:22:28   作者:127.0.0.1/24  
eval(str)函數(shù)很強(qiáng)大,官方解釋為將字符串str當(dāng)成有效的表達(dá)式來求值并返回計算結(jié)果,下面這篇文章主要給大家介紹了關(guān)于Python?eval()?函數(shù)的相關(guān)資料,需要的朋友可以參考下

一、語法和參數(shù)

在Python中evel()函數(shù)的語法格式為eval(expression, globals=None, locals=None),注意后面還有g(shù)lobals參數(shù)和locals參數(shù)。eval()函數(shù)用于執(zhí)行一個字符串表達(dá)式,并且返回該表達(dá)式的值。與eval相近的有exec函數(shù),該函數(shù)將會在另一篇文章詳細(xì)講解。

  • expression:表達(dá)式,上面提到evel函數(shù)用于執(zhí)行一個字符串表達(dá)式,表達(dá)式的內(nèi)容就放在此處。當(dāng)表達(dá)式涉及到
  • globals:該部分必須是字典!必須是字典!必須是字典!否則程序會出錯。當(dāng)定義了globals 參數(shù)之后eval函數(shù)的作用域會被限定在globals中。
  • locals:該參數(shù)掌控局部的命名空間,功能和globals類型,不過當(dāng)參數(shù)沖突時,會執(zhí)行l(wèi)ocals處的參數(shù)。

二、expression參數(shù)示例

a=10;
print(eval("a+1"))

運(yùn)行結(jié)果為11

【解析】:因?yàn)榇颂帥]有指定globals和locals,所以直接執(zhí)行expression部分的內(nèi)容。該程序的效果等價于a=10 print(a+1)

三、globals參數(shù)示例

a=10;
g={'a':4}
print(eval("a+1",g))

運(yùn)行結(jié)果為5

【解析】:因?yàn)楝F(xiàn)在指定了globals,所以在expression部分的作用域就是globals指定的字典范圍內(nèi)。所以此時外面的a=10被屏蔽,取用字典中的值。

四、locals參數(shù)示例

a=10
b=20
c=30
g={'a':6,'b':8}
t={'b':100,'c':10}
print(eval('a+b+c',g,t))

運(yùn)行結(jié)果為116

【解析】:根據(jù)上面題目的練習(xí)我們知道了當(dāng)有g(shù)lobals和locals時作用的范圍域是在globals和locals中,所以a=10,b=20,c=30不會被應(yīng)用。a和c的值分別去字典g和字典t中的值,當(dāng)globals和locals中都有參數(shù)b時取locals中的值。所以a=6,b=100,c=10

五、eval函數(shù)的危險之處

eval函數(shù)非常的方便,我們可以使用一行代碼就實(shí)現(xiàn)計算器的功能print(eval(input('請輸入')))。但是因?yàn)樗哂锌梢詫⒆址D(zhuǎn)成表達(dá)式執(zhí)行的特性,所以它也就可以去執(zhí)行系統(tǒng)命令。這樣很容易被別有用心的人用來執(zhí)行系統(tǒng)命令,刪除關(guān)鍵系統(tǒng)文件。

六、eval()函數(shù)官方文檔

   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:

>>> x = 1
>>> eval('x+1')
2

   This function can also be used to execute arbitrary code objects (such as those created by 
compile()). In this case pass a code object instead of a string. If the code object has been
compiled with 'exec' as the mode argument, eval()‘s return value will be None.
   Hints: dynamic execution of statements is supported by the exec() function. The globals() and 
locals() functions returns the current global and local dictionary, respectively, which may be 
useful to pass around for use by eval() or exec().
   See ast.literal_eval() for a function that can safely evaluate strings with expressions 
containing only literals.

附eval()函數(shù)常見作用有

1、計算字符串中有效的表達(dá)式,并返回結(jié)果

>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> eval("n + 4")
85

2、將字符串轉(zhuǎn)成相應(yīng)的對象(如list、tuple、dict和string之間的轉(zhuǎn)換)

>>> a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>> b = eval(a)
>>> b
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
>>> a = "{1:'xx',2:'yy'}"
>>> c = eval(a)
>>> c
{1: 'xx', 2: 'yy'}
>>> a = "(1,2,3,4)"
>>> d = eval(a)
>>> d
(1, 2, 3, 4)

3、將利用反引號轉(zhuǎn)換的字符串再反轉(zhuǎn)回對象

>>> list1 = [1,2,3,4,5]
>>> `list1`
'[1, 2, 3, 4, 5]'
>>> type(`list1`)
<type 'str'>
>>> type(eval(`list1`))
<type 'list'>
>>> a = eval(`list1`)
>>> a
[1, 2, 3, 4, 5]

總結(jié)

到此這篇關(guān)于Python eval() 函數(shù)的文章就介紹到這了,更多相關(guān)Python eval() 函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 個人微信公眾號接入ChatGPT的教程分享

    個人微信公眾號接入ChatGPT的教程分享

    這篇文章主要為大家詳細(xì)介紹了如何為個人微信公眾號接入ChatGPT,文中的實(shí)現(xiàn)步驟講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下
    2023-05-05
  • Python3.8中使用f-strings調(diào)試

    Python3.8中使用f-strings調(diào)試

    這篇文章主要介紹了Python3.8中使用f-strings調(diào)試的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Python實(shí)現(xiàn)隨機(jī)生成圖片驗(yàn)證碼詳解

    Python實(shí)現(xiàn)隨機(jī)生成圖片驗(yàn)證碼詳解

    這篇文章主要介紹了如何利用Python生成隨機(jī)的圖片驗(yàn)證碼 并打印驗(yàn)證碼的值,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起試試
    2022-01-01
  • Python微信公眾號開發(fā)平臺

    Python微信公眾號開發(fā)平臺

    這篇文章主要介紹了Python微信公眾號開發(fā)平臺,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-01-01
  • 在Django中創(chuàng)建自己的自定義用戶模型

    在Django中創(chuàng)建自己的自定義用戶模型

    這篇文章主要介紹了在Django中創(chuàng)建自己的自定義用戶模型,創(chuàng)建自己的自定義用戶模型至關(guān)重要。將來,如果要對模型進(jìn)行一些更改,則可以輕松進(jìn)行這些更改。不然我們可能必須對模型進(jìn)行一些更改,而且代碼的某些部分也將被更改,下面一起進(jìn)入文章里哦阿姐個表格的詳細(xì)內(nèi)容吧
    2022-01-01
  • 詳解python多線程之間的同步(一)

    詳解python多線程之間的同步(一)

    這篇文章主要介紹了python多線程之間的同步,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 解決Python中字符串和數(shù)字拼接報錯的方法

    解決Python中字符串和數(shù)字拼接報錯的方法

    相信很多的新手朋友都會碰到python連接字符串和數(shù)字的問題,因?yàn)閜ython是強(qiáng)類型的語言,如果你把一個字符串和數(shù)字直接做連接的操作的話,就會直接報錯的,今天就給大家說下字符串和數(shù)字拼接的問題,有需要的朋友們可以參考借鑒。
    2016-10-10
  • python3訪問字典里的值實(shí)例方法

    python3訪問字典里的值實(shí)例方法

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python3訪問字典里的值實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-11-11
  • Python使用Pycrypto庫進(jìn)行RSA加密的方法詳解

    Python使用Pycrypto庫進(jìn)行RSA加密的方法詳解

    RSA加密算法是一種強(qiáng)大的公鑰加密算法,安全性很高,這里我們來看一下Python使用Pycrypto庫進(jìn)行RSA加密的方法詳解,需要的朋友可以參考下
    2016-06-06
  • OpenCV半小時掌握基本操作之圓圈檢測

    OpenCV半小時掌握基本操作之圓圈檢測

    這篇文章主要介紹了OpenCV基本操作之圓圈檢測,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09

最新評論