前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python3 eval()函数

python3 eval()函数

作者头像
py3study
发布于 2020-01-03 08:35:06
发布于 2020-01-03 08:35:06
1.1K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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!强大的函数有代价。安全性是其最大的缺点。

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
__import__('os').system('dir') 

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
open('文件名').read() 

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

怎么避免安全问题?

1、自行写检查函数;

2、使用ast.literal_eval

eval函数的另一个用途:计算字符串表达式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> l=eval('1+2-3/4*3')
>>> l
0.75
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python-字符串str和json格式的转换「建议收藏」
str转换为json格式,前提一定需要保证这个str的格式和json是一致的,即左边最外层是大括号,右边的最外层是大括号。如果不一致,推荐用正则进行拆分至和json格式一致 1. 通过json.loads进行转换
全栈程序员站长
2022/06/30
1.3K0
python中eval函数作用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
菲宇
2019/10/22
9290
Python eval 函数妙用
语法: eval(source, globals, locals) -> value
周小董
2019/03/25
8970
python 的eval()函数
主要参考:https://blog.csdn.net/chowyoungyoung/article/details/78879926
用户7886150
2020/12/22
1.2K0
深度辨析 Python 的 eval() 与 exec()
Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。
程序员小新
2021/12/30
6280
深度辨析 Python 的 eval() 与 exec()
Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。
Python猫
2019/04/09
6750
深度辨析 Python 的 eval() 与 exec()
Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。
Python猫
2019/03/24
3K0
python笔记22-literal_eval函数处理返回json中的单双引号
在做接口测试的时候,最常见的接口返回数据就是json类型,json类型数据实际上就是字串,通常标准的json格式是可以转化成python里面的对应的数据类型的 有时候开发返回的数据比较坑,不按常理出牌,如下这种,result对应的是一个list数据,却又加了单引号变成了一个字符串 严格意义来讲,json串里面应该都是双引号,这种单双交替的就尴尬了
上海-悠悠
2018/07/25
2.5K0
python笔记22-literal_eval函数处理返回json中的单双引号
Python内置函数eval()用法及其安全问题
Python内置函数eval()用来对表达式进行求值: >>> eval('3+5') 8 >>> a = 3 >>> b = 5 >>> eval('a+b') 8 这个函数在Python 3.x中使用较多,因为在Python 3.x中使用input()函数接收用户输入时一律返回字符串,经常需要进行类型转换,这时候常使用eval()函数,例如: >>> x = input('Please input:') Please input:35 >>> x '35' >>> type(x) <class 'st
Python小屋屋主
2018/04/16
4K0
深入了解Python的eval函数安全用法与性能平衡
在Python中,eval函数是一个强大而灵活的工具,它允许将字符串作为代码来执行。然而,虽然eval在某些情况下非常方便,但它也潜藏着一些潜在的危险,如果不小心使用,可能导致安全性问题。在本文中,我们将深入探讨eval函数的基础用法,并提供一些使用该函数时需要注意的安全性建议。
一键难忘
2024/04/14
6250
python神奇函数之eval()学习
前些天发现了一个风趣幽默的人工智能学习网站,通俗易懂,忍不住分享一下给大家。点击跳转到教程
用户7886150
2020/11/30
8320
经理看到我用eval,过来就是一jio
前端根据用户输入的内容(输入一个数据),视图层自动给解析并求值成 字符串/整形/字典/浮点型/列表等。
我去热饭
2022/05/18
2900
经理看到我用eval,过来就是一jio
Python eval 函数 将字符串 转为 有效的表达式
eval() 函数十分强大 —— 将字符串 当成 有效的表达式 来求值 并 返回计算结果
Devops海洋的渔夫
2019/06/02
2K0
python中的eval函数的用法_isnan函数
  在Python中eval()函数的语法格式为eval(expression, globals=None, locals=None),注意后面还有globals参数和locals参数。eval()函数用于执行一个字符串表达式,并且返回该表达式的值。与eval相近的有exec函数,该函数将会在另一篇文章详细讲解。
全栈程序员站长
2022/11/01
1.2K0
python3中eval函数用法简介[通俗易懂]
python中eval函数的用法十分的灵活,这里主要介绍一下它的原理和一些使用的场合。
全栈程序员站长
2022/11/02
1.2K0
python3类型转换集合
支持转换为 int 类型的,仅有 float、str、bytes,其他类型均不支持。
py3study
2020/01/19
1.3K0
快来看啊!原来Python里还有这些的一些有趣的东西!
相信大家使用python也或多或少有一段时间了,只是用它来写代码,却没有发现它里面其实有很多神奇的事情。
用户7466307
2020/06/16
3990
Python将字符串转为字典
在工作中我们经常会遇到数据类型之间的互转的问题,而通常我们请求一些API借口返回的结果就是字符串,但是格式是Json的,在Python中转为字典是最易处理的,所以这里记录一下在Python下把字符串转为字典的三种方法。
后场技术
2020/09/03
4.5K0
Python将字符串转为字典
Python-数据类型转换
当涉及数据类型转换时,Python提供了多种内置函数来执行不同类型之间的转换 以下是每个方法的详细说明和示例案例
用户9006224
2023/10/11
2260
python中各种数据类型之间的转换
由于 json 语法规定 数组或对象之中的字符串必须使用双引号,不能使用单引号 (官网上有一段描述是 “A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes” ),因此下面的转换是错误的:
狼啸风云
2019/06/13
3.9K0
相关推荐
Python-字符串str和json格式的转换「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验