【基础15】【自学笔记】Python函数eval()和 ast.literal_eval区别
一、描述
1 2 3 | eval () 函数用来执行一个字符串表达式,并返回表达式的值。 ast.literal_eval()函数是 eval ()的升级版本,使用更加安全 |
二、具体用法
eval() 语法:
eval(expression[, globals[, locals]])
参数
- expression -- 表达式。
- globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
- locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
1 2 3 4 5 6 7 8 9 10 | >>>x = 7 >>> eval ( '3 * x' ) 21 >>> eval ( 'pow(2,2)' ) 4 >>> eval ( '2 + 2' ) 4 >>> n = 81 >>> eval ( "n + 4" ) 85 |
ast.literal_eval()语法:
import ast
res1="[1,2,3]"
res2="(1,2,3)"
res3="{'name':'test1','password':123456}"
print(ast.literal_eval(res1))
print(ast.literal_eval(res2))
print(ast.literal_eval(res3))
print(type(ast.literal_eval(res1)))
print(type(ast.literal_eval(res2)))
print(type(ast.literal_eval(res3)))
运行结果:
总结:
1、eval针对用户而已输入的字符串,eval就会不管三七二十一照样执行,读取你的电脑目录结构,文件,删除文件
open(r'D://filename.txt', 'r').read()
__import__('os').system('dir')
__import__('os').system('rm -rf /etc/*')
2、模块下的literal_eval()函数:则会判断需要计算的内容计算后是不是合法的python类型,如果是则进行运算,否则就不进行运算。
import ast
print(ast.literal_eval('1+2'))
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/16092665.html
分类:
python基础系列学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!