eval是python中一个相当智能的函数,把参数当成表达式,进行最大限度的解析,

比如:

a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"

b = eval(a)

b
Out[3]: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]] type(b)
Out[4]: list a = "{1: 'a', 2: 'b'}" b = eval(a) b
Out[7]: {1: 'a', 2: 'b'} type(b)
Out[8]: dict a = "([1,2], [3,4], [5,6], [7,8], (9,0))" b = eval(a) b
Out[11]: ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))

从以上可以看出,eval相当的好用,但是它也能解析一些输入命令,比如:

eval("__import__('os').system('dir')")

这样写会将当前目录下的文件全都显示出来,如果换成删除,那麻烦就大了。

所以,很多时候我们需要在转换前先检查下表达式的合法性,或者直接使用literal_eval,这个函数会自动的检查安全性和合法性,如果有问题就会直接抛出异常,使用literal_eval前要先导入ast。

最新文章

  1. 服务器Ubuntu16.04下连接锐捷
  2. block的用法以及block和delegate的比较(转发)
  3. visual studio粘贴html代码.会自行添加一些未知代码(自动格式化)
  4. poj1375Intervals(点到圆的切线)
  5. 后缀为inc的是什么文件?C#中如何包含inc文件?
  6. Centos环境下部署游戏服务器-常用命令
  7. ISP与IAP的区别
  8. poj 3258 River Hopscotch 二分
  9. wpf 类似TextBlock外观的Button的样式
  10. python 标准库 -- logging
  11. POJ 3463 最(次)短路条数
  12. [HAOI2015]树上操作-树链剖分
  13. 反向Ajax:WebSocket
  14. 【C/C++】实现数据结构广义表
  15. jquery的一个小扩展,读取URL里的参数
  16. IntelliJ IDEA 调试技巧
  17. PAT L1-027 出租
  18. Android Intent之Action应用
  19. 前端(八):react入门
  20. javascript函数的四种调用模式及其this关键字的区别

热门文章

  1. 【PHP面向对象(OOP)编程入门教程】4.如何抽象出一个类?
  2. struts2-(2)HelloWorld
  3. 08OC之Foundation框架
  4. iOS开发——UI进阶篇(十七)CALayer,核心动画基本使用
  5. iOS开发——UI进阶篇(五)通知、代理、kvo的应用和对比,购物车
  6. Unity手游之路<九>自动寻路Navmesh之高级主题
  7. python扩展实现方法--python与c混和编程 转自:http://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html
  8. COGS 2434 暗之链锁 题解
  9. 11.2---字符串数组排序,删除变位词(CC150)
  10. VB中 ByRef与ByVal区别