Python中eval()函数的功能及使用方法小结

 更新时间:2023年05月29日 19:03:18   作者:愿得一人心白首不相离  
python中eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果,所以,结合math当成一个计算器很好用

可以把list,tuple,dict和string相互转化。

1、字符串转换成列表

>>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>>type(a)
>>> b = eval(a)
>>> print b[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
>>> type(b)

2、字符串转换成字典

>>> a = "{1: 'a', 2: 'b'}"
>>> type(a)
>>> b = eval(a)
>>> print b{1: 'a', 2: 'b'}
>>> type(b)

3、字符串转换成元组

>>> a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
>>> type(a)
>>> b = eval(a)
>>> print b([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))
>>> type(b)

4、eval()函数传进去的参数必须是字符串或者是对象

示例1:

>>>a=10;
>>>print(eval("a+1"))
>>>执行结果: 11

示例2:

>>>a=10;
>>>g={'a':4}
>>>print(eval("a+1",g))
>>>执行结果:5

示例3:

>>>a=10
>>>b=20
>>>c=30
>>>g={'a':6,'b':8}
>>>t={'b':100,'c':10}
>>>print(eval('a+b+c',g,t))
>>>执行结果:116  (a=6, b=100, c=10)

5、eval函数,eval去除引号后会检查到它是不是可计算的,如果可计算会将计算的结果打印出来,如果不可计算直接返回结果

示例1:不可计算》》》直接输出结果

>>>s='["a","b","c"]'
>>>print(eval(s))
>>>执行结果: ['a', 'b', 'c']

示例2:表达式可计算》》》计算之后输出结果

>>>s='abs(-10)'  
>>>print(eval(s))
>>>输出结果:10 

5、eval()函数,功能是将string变成算术表达式来执行

示例1:

>>>eval("1+2")
>>>执行结果: 3

示例2:

>>> eval("print(\"hello, world\")")
>>>输出结果:hello, world

eval(str)函数很强大,官方解释为:将字符串str当成有效的表达式来求值并返回计算结果。所以,结合math当成一个计算器很好用。

eval()函数常见作用有:

1、计算字符串中有效的表达式,并返回结果

>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> eval("n + 4")
85

2、将字符串转成相应的对象(如list、tuple、dict和string之间的转换)

 将python内存中的数据类型转成其该有的数据类型,而不是json字符串

>>> a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>> b = eval(a)
>>> b
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
>>> a = "{1:'xx',2:'yy'}"
>>> c = eval(a)
>>> c
{1: 'xx', 2: 'yy'}
>>> a = "(1,2,3,4)"
>>> d = eval(a)
>>> d
(1, 2, 3, 4)

例外:json格式的字典字符串如果键值对中的值为单字节的话可以使用eval()表达式转换为python数据类型【例如json转dict】

 ①但是如果json格式的字典字符串中的键值对中的值为复杂的数据类型如列表或者列表中嵌套字典则无法将json转换为dict数据

 ②eval(str)当字符串中有null【null的反序列化通过json.load()方法可以转换为None】值,无法将字符串转成相应的对象,会报错。

json_string = """{
  "answerList": [
    {
      "content": "string",
      "questionId": "string",
      "questionIndex": 0,
      "questionTitle": "string",
      "questionType": 0,
      "questionWeight": 0,
      "score": 0,
      "scoreId": "string",
      "scoreName": "string",
      "scoreWeight": 0,
      "selectOptions": [
        {
          "disabledWeight": true,
          "evaluateStatus": 0,
          "optionId": "string",
          "optionTitle": "string",
          "optionWeight": 0
        }
      ],
      "tags": [
        {
          "tagId": "string",
          "tagTitle": "string"
        }
      ]
    }
  ],
  "channel": "string",
  "externalUnionid": "string",
  "key": "string",
  "qaJson": "string",
  "unionid": "string",
  "uuid": "string"
}"""
print(json_string) #打印json字符串
print(type(json_string))#打印json字符串的类型:str
print(eval(json_string))使用eval()表达式把json字符串转换为python数据类型:字典类型--》结果失败,报错
json_dict = json.loads(json_string) #使用json.loads反序列化方式,将json字符串转换为python数据类型成功
print(type(json_dict)) #打印转换后的数据类型:dict
print(json_dict)#打印转换成功后的字典数据

3、将利用反引号转换的字符串再反转回对象

>>> list1 = [1,2,3,4,5]
>>> `list1`
'[1, 2, 3, 4, 5]'
>>> type(`list1`)
<type 'str'>
>>> type(eval(`list1`))
<type 'list'>
>>> a = eval(`list1`)
>>> a
[1, 2, 3, 4, 5]

到此这篇关于Python中eval()函数的功能及使用方法的文章就介绍到这了,更多相关Python eval()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python tkinter库实现气泡屏保和锁屏

    python tkinter库实现气泡屏保和锁屏

    这篇文章主要为大家详细介绍了python tkinter库实现气泡屏保和锁屏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Python无损压缩图片的示例代码

    Python无损压缩图片的示例代码

    这篇文章主要介绍了Python无损压缩图片的方法,简单的代码即可实现压缩图片,感兴趣的朋友可以了解下
    2020-08-08
  • PyQt5利用QPainter绘制各种图形的实例

    PyQt5利用QPainter绘制各种图形的实例

    下面小编就为大家带来一篇PyQt5利用QPainter绘制各种图形的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • python 安装库几种方法之cmd,anaconda,pycharm详解

    python 安装库几种方法之cmd,anaconda,pycharm详解

    在python项目开发的过程中,需要安装大大小小的库,本文会提供几种安装库的方法,通过实例截图给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下
    2020-04-04
  • 使用python求斐波那契数列中第n个数的值示例代码

    使用python求斐波那契数列中第n个数的值示例代码

    这篇文章主要给大家介绍了关于使用python求斐波那契数列中第n个数的值的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • Python中json.load()和json.loads()有哪些区别

    Python中json.load()和json.loads()有哪些区别

    json.loads()用于解析一个有效的JSON字符串并将其转换为Python字典,json.load——()用于从一个文件读取JSON类型的数据,然后转转换成Python字典,本文讲解下python中两者的使用
    2021-06-06
  • python的django写页面上传文件及遇到的问题小结

    python的django写页面上传文件及遇到的问题小结

    这篇文章主要介绍了python的django写页面上传文件以及遇到的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Python中关于logging模块的学习笔记

    Python中关于logging模块的学习笔记

    在本篇文章里小编给大家整理的是一篇关于Python中logging模块相关知识点内容,有兴趣的朋友们可以参考下。
    2020-06-06
  • virtualenv介绍及简明教程

    virtualenv介绍及简明教程

    这篇文章主要介绍了virtualenv介绍及简明教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • scrapy在python爬虫中搭建出错的解决方法

    scrapy在python爬虫中搭建出错的解决方法

    在本篇文章里小编给大家整理了一篇关于scrapy在python爬虫中搭建出错的解决方法,有需要的朋友们可以学习参考下。
    2020-11-11

最新评论