python什么时候用eval_Python:eval的妙用和滥用
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的妙用和滥用相关推荐
- Python:eval的妙用和滥用
时间 2014-07-08 13:05:24 CSDN博客 原文 http://blog.csdn.net/zhanh1218/article/details/37562167 主题 Python ...
- python中requests库的用途-python中requests库session对象的妙用详解
在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...
- cat命令详解_好程序员Python培训之详解eval好与坏
好程序员Python培训之详解eval好与坏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧. eval是Python的一个内置函数,这个函数的作用 ...
- python eval函数_Python eval 函数妙用
作者博文地址:https://www.cnblogs.com/liu-shuai/ eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globa ...
- Python eval 函数妙用
作者博文地址:https://www.cnblogs.com/liu-shuai/ eval 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globa ...
- python办公室妙用-python eval()函数的妙用和滥用
eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果: >>> s="8*8" >>> eval(s ...
- Python eval的妙用
使用eval可以可以去除字符串的引号,仅仅获取引号里面的值
- Python高阶函数和eval函数
一.介绍 高阶函数:变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数. 二.具体实用 其实说白了,高阶函数功能就是:把函数本身当做一个参数,传到另一个函数中,然后在这个 ...
- python内置函数 exec eval compile
1.exec eval compile ·exec & eval exec和eval都可以执行储存在字符串或文件中的 Python 语句. 用法:exec(object[, global ...
最新文章
- 二、配置QtDesigner、PyUIC及PyRcc
- Egret学习笔记 (Egret打飞机-3.实现背景循环滚动)
- 域名无法加入域解决方法
- Java读取Excel文件并将之写入数据库操作
- ASP.NET Core中借助CSRedis实现安全高效的分布式锁
- mysql的存储引擎详解_MySQL常见存储引擎详解
- FreeEIM 2.0 beta 发布
- java的关键字和保留字_Java关键字和保留字及其含义
- 网络配置_CentOS8 网络配置
- linux超级终端minicom的使用方法
- (转)资产管理和财富管理的区别
- fortran95查询字符串出现次数子程序
- PostgreSQL如何导入SJIS字符集的文件
- 驴妈妈旅游携手法大大,打造分销商签约新体验
- 公司研制的CPU卡燃气表正式投放北京市场
- IP电话的VoIP语音网关设计
- 六、python实现日语单词索引:查询单词对应的课
- 用计算机怎么计算税率表,个税税率表计算器
- python_大智慧SAR指标编写
- 通过亚马逊云科技实现基于 Restful API 的 CloudFront Distribution 复制/克隆功能
热门文章
- mysql 5.0 数据库_mysql5.0常用命令
- .net core 引用jar_Python一键转Jar包,Java调用Python新姿势!
- [转]Android Activity和Intent机制学习笔记
- [NodeJs] 如何使用nodejs对base64进行编解码?
- [react] React什么是有状态组件?
- 前端学习(3344):数组方法的总结和应用
- 前端学习(3089):vue+element今日头条管理-关于接口的调错
- 前端学习(3059):vue+element今日头条管理-优化文章状态
- [html] 请问60*80的canvas占多少内存?你是怎么计算的?
- [vue] vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?