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