Python之eval函數的用法

Python之eval函數的用法

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

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

  • 參數:

    1. source:一個Python表達式或函數compile()返回的代碼對象
    2. globals:可選。必須是dictionary
    3. 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章