Python之eval函數的用法
-
功能:將字符串str當成有效的表達式來求值並返回計算結果。
-
語法: eval(source[, globals[, locals]]) -> value
-
參數:
- source:一個Python表達式或函數compile()返回的代碼對象
- globals:可選。必須是dictionary
- locals:可選。任意map對象
示例 :
>>> 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'>
今天學習遇到的函數,eval()就是將字符串轉換爲它所代表的值,比如說下面的應用場景,輸入人民幣值轉換爲美元,中間有個匯率計算,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