Python中函数eval和ast.literal_eval的区别详解
发布时间 - 2026-01-11 02:43:53 点击率:次前言

众所周知在Python中,如果要将字符串型的list,tuple,dict转变成原有的类型呢? 这个时候你自然会想到eval. eval函数在python中做数据类型的转换还是很有用的。它的作用就是把数据还原成它本身或者是能够转化成的数据类型.下面来看看示例代码:
string <==> list
string <==> tuple
string <==> dict
也就是说,使用eval可以实现从元祖,列表,字典型的字符串到元祖,列表,字典的转换,此外,eval还可以对字符
串型的输入直接计算。比如,她会将'1+1'的计算串直接计算出结果。
从上面来看,eval功能可谓非常强大,即可以做string与list,tuple,dict之间的类型转换,还可以做计算器使用!更有甚者,可以对她能解析的字符串都做处理,而不顾忌可能带来的后果!所以说eval强大的背后,是巨大的安全隐患!!! 比如说,用户恶意输入下面的字符串
open(r'D://filename.txt', 'r').read()
__import__('os').system('dir')
__import__('os').system('rm -rf /etc/*')
那么eval就会不管三七二十一,显示你电脑目录结构,读取文件,删除文件.....如果是格盘等更严重的操作,她也会照做不误!!!
所以这里就引出了另外一个安全处理方式ast.literal_eval.可以先看下stackoverflow及Python官方关于这个解释!
stackoverflow
Python官方文档
简单点说ast模块就是帮助Python应用来处理抽象的语法解析的。而该模块下的literal_eval()函数:则会判断需要计算的内容计算后是不是合法的python类型,如果是则进行运算,否则就不进行运算。
比如说上面的计算操作,及危险操作,如果换成了ast.literal_eval() ,都会拒绝执行。
报值错误,不合法的字符串!
而只会执行合法的Python类型,从而大大降低系统的危险性!
所以出于安全考虑,对字符串进行类型转换的时候,最好使用ast.literal_eval()函数!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# ast.literal
# eval
# python
# eval函数
# eval函数用法
# Python eval函数介绍及用法
# Python使用eval函数执行动态标表达式过程详解
# 将python字符串转化成长表达式的函数eval实例
# python重要函数eval多种用法解析
# python3中eval函数用法使用简介
# 详解python eval函数的妙用
# Python 执行字符串表达式函数(eval exec execfile)
# Python之eval()函数危险性浅析
# Python eval函数原理及用法解析
# 元祖
# 就会
# 也会
# 还可以
# 就不
# 对她
# 而不
# 只会
# 或者是
# 来看看
# 更有甚者
# 这个时候
# 二十一
# 可以实现
# 还可
# 另外一个
# 要将
# 这篇文章
# 谢谢大家
# 会将
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
nginx修改上传文件大小限制的方法
个人网站制作流程图片大全,个人网站如何注销?
如何批量查询域名的建站时间记录?
Laravel distinct去重查询_Laravel Eloquent去重方法
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
如何用wdcp快速搭建高效网站?
如何快速查询域名建站关键信息?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
Laravel如何与Inertia.js和Vue/React构建现代单页应用
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
如何快速上传自定义模板至建站之星?
jquery插件bootstrapValidator表单验证详解
Laravel如何使用Eloquent进行子查询
JavaScript如何实现路由_前端路由原理是什么
网站建设保证美观性,需要考虑的几点问题!
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
Laravel如何升级到最新版本?(升级指南和步骤)
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
简单实现jsp分页
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Laravel怎么使用artisan命令缓存配置和视图
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
Laravel如何实现用户密码重置功能?(完整流程代码)
微信小程序 require机制详解及实例代码
如何构建满足综合性能需求的优质建站方案?
如何快速搭建自助建站会员专属系统?
,交易猫的商品怎么发布到网站上去?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
iOS发送验证码倒计时应用
如何用狗爹虚拟主机快速搭建网站?
js实现获取鼠标当前的位置
如何基于PHP生成高效IDC网络公司建站源码?
javascript日期怎么处理_如何格式化输出
JavaScript如何实现倒计时_时间函数如何精确控制
网站制作价目表怎么做,珍爱网婚介费用多少?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Laravel如何处理CORS跨域请求?(配置示例)
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
如何快速搭建安全的FTP站点?
如何用花生壳三步快速搭建专属网站?
如何撰写建站申请书?关键要点有哪些?
如何快速辨别茅台真假?关键步骤解析
如何在企业微信快速生成手机电脑官网?
焦点电影公司作品,电影焦点结局是什么?

