eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。

so,结合math当成一个计算器很好用。

其他用法,可以把list,tuple,dict和string相互转化。见下例子: 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))

不可谓不强大!

BUT!强大的函数有代价。安全性是其最大的缺点。

想一想这种使用环境:需要用户输入一个表达式,并求值。

如果用户恶意输入,例如:

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

那么eval()之后,你会发现,当前目录文件都会展现在用户前面。

那么继续输入:

open('文件名').read()

代码都给人看了。获取完毕,一条删除命令,文件消失。哭吧!

怎么避免安全问题?

1、自行写检查函数;

2、使用ast.literal_eval: 自行查看DOCUMENT

本文由@The_Third_Wave(Blog地址: http://blog.csdn.net/zhanh1218 )原创。还有未涉及的,会不定期更新,有错误请指正。

如果你看到这篇博文时发现没有不完整,那是我为防止爬虫先发布一半的原因,请看原作者Blog。

python什么时候用eval_Python:eval的妙用和滥用相关推荐

  1. Python:eval的妙用和滥用

    时间 2014-07-08 13:05:24 CSDN博客 原文  http://blog.csdn.net/zhanh1218/article/details/37562167 主题 Python ...

  2. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  3. cat命令详解_好程序员Python培训之详解eval好与坏

    好程序员Python培训之详解eval好与坏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧. eval是Python的一个内置函数,这个函数的作用 ...

  4. python eval函数_Python eval 函数妙用

    作者博文地址:https://www.cnblogs.com/liu-shuai/ eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globa ...

  5. Python eval 函数妙用

    作者博文地址:https://www.cnblogs.com/liu-shuai/ eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globa ...

  6. python办公室妙用-python eval()函数的妙用和滥用

    eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果: >>> s="8*8" >>> eval(s ...

  7. Python eval的妙用

    使用eval可以可以去除字符串的引号,仅仅获取引号里面的值

  8. Python高阶函数和eval函数

    一.介绍 高阶函数:变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数. 二.具体实用 其实说白了,高阶函数功能就是:把函数本身当做一个参数,传到另一个函数中,然后在这个 ...

  9. python内置函数 exec eval compile

     1.exec eval compile   ·exec & eval exec和eval都可以执行储存在字符串或文件中的 Python 语句. 用法:exec(object[, global ...

最新文章

  1. 二、配置QtDesigner、PyUIC及PyRcc
  2. Egret学习笔记 (Egret打飞机-3.实现背景循环滚动)
  3. 域名无法加入域解决方法
  4. Java读取Excel文件并将之写入数据库操作
  5. ASP.NET Core中借助CSRedis实现安全高效的分布式锁
  6. mysql的存储引擎详解_MySQL常见存储引擎详解
  7. FreeEIM 2.0 beta 发布
  8. java的关键字和保留字_Java关键字和保留字及其含义
  9. 网络配置_CentOS8 网络配置
  10. linux超级终端minicom的使用方法
  11. (转)资产管理和财富管理的区别
  12. fortran95查询字符串出现次数子程序
  13. PostgreSQL如何导入SJIS字符集的文件
  14. 驴妈妈旅游携手法大大,打造分销商签约新体验
  15. 公司研制的CPU卡燃气表正式投放北京市场
  16. IP电话的VoIP语音网关设计
  17. 六、python实现日语单词索引:查询单词对应的课
  18. 用计算机怎么计算税率表,个税税率表计算器
  19. python_大智慧SAR指标编写
  20. 通过亚马逊云科技实现基于 Restful API 的 CloudFront Distribution 复制/克隆功能

热门文章

  1. mysql 5.0 数据库_mysql5.0常用命令
  2. .net core 引用jar_Python一键转Jar包,Java调用Python新姿势!
  3. [转]Android Activity和Intent机制学习笔记
  4. [NodeJs] 如何使用nodejs对base64进行编解码?
  5. [react] React什么是有状态组件?
  6. 前端学习(3344):数组方法的总结和应用
  7. 前端学习(3089):vue+element今日头条管理-关于接口的调错
  8. 前端学习(3059):vue+element今日头条管理-优化文章状态
  9. [html] 请问60*80的canvas占多少内存?你是怎么计算的?
  10. [vue] vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?