功能:將字符串str當成有效的表達式來求值並返回計算結果。
語法: eval(source[, globals[, locals]]) -> value
參數:
source:一個Python表達式或函數compile()返回的代碼對象
globals:可選。必須是dictionary
locals:可選。任意map對象
以下是 eval() 方法的語法:
str = '{'code': 200, 'message': '中國', 'id': 'xiaxia', 'entries_id': 'a6a4b870-b22c-5be8-8cbb-728ae1107bfc', 'username': 'Appium', 'password': 'Kk261203', 'user_id': '77eb3409-aada-4ceb-a3a6-872a4608aa42', 'clientId': 'PbCREuPr3iaFANEDjtiEzXooFl7mXGQ7', 'access_token': 'Bearer'}'
#將字符串轉換為字典
data_dict= eval(str)
print(data_dict)
username = data_dict.get("username")
password = data_dict.get("password")
示例1
>>> 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 = "{1: 'a', 2: 'b'}"
>>> type(c)
<class 'str'>
>>> type(eval(c)) #將字符串轉換為字典
<class 'dict'>
示例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 <module>
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