Python之eval函式的用法

2022-06-16 05:30:14 字數 1366 閱讀 9658

功能:將字串str當成有效的表示式來求值並返回計算結果。

語法: eval(source[, globals[, locals]]) -> value

引數:source:乙個python表示式或函式compile()返回的**物件

globals:可選。必須是dictionary

locals:可選。任意map物件

#將字串轉換為字典

data_dict= eval(str)

print(data_dict)

username = data_dict.get("username")

password = data_dict.get("password")

示例1

>>> a = '[1,2,3]'

>>> type(a)

>>> type(eval(a)) #將字串轉換為列表

>>> b = '1000'

>>> type(b)

>>> type(eval(b)) #將字串轉換為整形

>>> c = ""

>>> type(c)

>>> type(eval(c)) #將字串轉換為字典

示例2

比如說下面的應用場景,輸入人民幣值轉換為美元,中間有個匯率計算,input()返回的值為字串,所以該值不能進行後面的匯率計算。

rmb_value = input('請輸入人民幣金額:')

usd_vs_rmb = 6.77

usd_value = rmb_value / usd_vs_rmb

print('美元金額是:',usd_value)

執行結果報錯

traceback (most recent call last):

file "h.py", line 4, in usd_value = rmb_value / usd_vs_rmb

typeerror: unsupported operand type(s) for /: 'str' and 'float'

加入eval()轉換函式

rmb_value = input('請輸入人民幣金額:') #返回字元型

rmb_value = eval(rmb_value) #轉換為數字

usd_vs_rmb = 6.77

usd_value = rmb_value / usd_vs_rmb

print('美元金額是:',usd_value)

執行結果

請輸入人民幣金額:5

美元金額是: 0.7385524372230429

Python之eval 函式的危險

python的eval 函式可以把字串 123 變成數字型別的123,pp3e上說它很危險,還可以執行其他命令!在家沒事,做了些試驗。果然,如果python寫的cgi程式中如果使用eval 而非int 來轉換諸如年齡這樣的輸入框中的內容時是非常危險的。不僅可以看見列出系統的全部檔案,還可以刪除檔案,...

Python之eval函式的用法

a 1,2,3 type a class str type eval a 將字串轉換為列表 class list b 1000 type b class str type eval b 將字串轉換為整形 class int c type c class str type eval c 將字串轉換為字...

python之函式eval()學習

python中有許多很有用的內建函式,比如 eval 這個函式。能夠熟練的使用這些內建函式可以起到很多事半功倍的功效。eval 官方文件裡面給出來的功能解釋是 將字串string物件轉化為有效的表示式參與求值運算返回計算結果。語法上 呼叫的是 eval expression,globals none...