91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python的eval()函數怎么用

發布時間:2022-01-19 16:48:34 來源:億速云 閱讀:258 作者:iii 欄目:開發技術

這篇文章主要介紹“Python的eval()函數怎么用”,在日常操作中,相信很多人在Python的eval()函數怎么用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python的eval()函數怎么用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、語法和參數

在Python中evel()函數的語法格式為eval(expression, globals=None, locals=None),注意后面還有globals參數和locals參數。eval()函數用于執行一個字符串表達式,并且返回該表達式的值。

  • expression:表達式,上面提到evel函數用于執行一個字符串表達式,表達式的內容就放在此處。當表達式涉及到

  • globals:該部分必須是字典!必須是字典!必須是字典!否則程序會出錯。當定義了globals 參數之后eval函數的作用域會被限定在globals中。

  • locals:該參數掌控局部的命名空間,功能和globals類型,不過當參數沖突時,會執行locals處的參數。

二、expression參數示例

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

運行結果為11

【解析】:因為此處沒有指定globals和locals,所以直接執行expression部分的內容。該程序的效果等價于a=10 print(a+1)

三、globals參數示例

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

運行結果為5

【解析】:因為現在指定了globals,所以在expression部分的作用域就是globals指定的字典范圍內。所以此時外面的a=10被屏蔽,取用字典中的值。

四、locals參數示例

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

運行結果為116

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

五、eval函數的危險之處

eval函數非常的方便,我們可以使用一行代碼就實現計算器的功能print(eval(input('請輸入')))。但是因為它具有可以將字符串轉成表達式執行的特性,所以它也就可以去執行系統命令。這樣很容易被別有用心的人用來執行系統命令,刪除關鍵系統文件。

六、eval()函數官方文檔

   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()函數常見作用有

1、計算字符串中有效的表達式,并返回結果

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

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

>>> 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、將利用反引號轉換的字符串再反轉回對象

>>> 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]

到此,關于“Python的eval()函數怎么用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陈巴尔虎旗| 岳阳县| 大化| 台中市| 新兴县| 分宜县| 桃园市| 新蔡县| 泸水县| 岱山县| 清远市| 邢台市| 吉安市| 吉隆县| 泾川县| 新营市| 西乌珠穆沁旗| 莎车县| 威信县| 科技| 大庆市| 福清市| 泰州市| 闸北区| 巴林左旗| 崇礼县| 富平县| 老河口市| 黄山市| 勐海县| 遂川县| 河北省| 广宁县| 亚东县| 宣化县| 乐陵市| 沐川县| 藁城市| 台安县| 新丰县| 黑水县|