python eval函數的神奇魔法

三歲和你用白話學編程,白話一堆,編程自會!

eval() 函數

eval() 函數是python的十分重要的一個函數
他的作用是用表達式的方式解析並執行字符串,輸出返回結果

>>> a = 1
>>>eval('a + 1')
>2
>>>eval('2.2 + 3.3')
>5.5

字符串都可以這樣計算,那麼計算器不是很簡單?

eval()書寫簡易計算器

>>> a = eval(input('輸入你要計算的公式'))
>>> print(a)

解析:

用input函數輸入需要計算的公式
同eval函數把字符串進行解析並運算
用print函數輸出

eval() 深度解析

eval(expression[, globals[, locals]])
實參是一個字符串,以及可選的 globals 和 locals 。 globals 實參必須是一個字典。locals 可以是任何映射對象。

白話時間:
第一個參數一定是字符串,第二個一定是字典,第三個都可以

講不清楚怎麼辦,上栗子

>>> a = 3
>>> b = 4
>>> eval('a + b')
>7

>>>print(eval("{'name':'python','age':age}",{"age":162}))
>{'name': 'python', 'age': 162}

>>>age=18
>>>print(eval("{'name':'linux','age':age}",{"age":1822},locals()))
>{'name': 'linux', 'age': 18}

理解理解

eval() 類型

就是把字符串裏面的內容轉換爲原有內容

>>> type(eval('5')) #整型
<class 'int'>
>>> type(eval('14.12')) # 浮點型
<class 'float'>
>>> type(eval('(14, 12)')) #元組
<class 'tuple'>
>>> type(eval("{'name':'python','age':'3.7.4'}"))
<class 'dict'> # 字典
>>> type(eval("['name','python','age','3.7.4']"))
<class 'list'> #數組

特別注意

>>> type(eval("name"))
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    type(eval("name"))
  File "<string>", line 1, in <module>
NameError: name 'name' is not defined

如果字符串裏面的英文內容沒有被定義使用eval() 函數以後
裏面的內容變成了變量,但是沒有賦值就會報錯

這裏特別需要注意

三歲白話時間,今天就到這裏啦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章