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
posted @ 2020-04-14 16:51  莫贞俊晗  阅读(2230)  评论(0编辑  收藏  举报