Python之eval函數的用法


功能:將字符串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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM