• 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
    
  • 相关阅读:
    Stream流之三级查询
    SpringBoot日期格式的设置
    el表达式
    SpringMV+HuTool之验证码登录
    Spring注解详解
    @ResponseBody注解使用(返回字符串并不跳转)
    每日leetcode-数组-589. N 叉树的前序遍历
    python apply函数
    剑指offer-JZ6 旋转数组的最小数字
    torch.manual_seed()函数
  • 原文地址:https://www.cnblogs.com/gqv2009/p/12699084.html
Copyright © 2020-2023  润新知