Python中eval函数的表达式有哪些
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了Python中eval函数的表达式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。eval 是干嘛的?解析字符串
千家信息网最后更新 2025年01月19日Python中eval函数的表达式有哪些
这篇文章主要介绍了Python中eval函数的表达式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
eval 是干嘛的?
解析字符串表达式并执行,并返回一个值
语法格式
eval(expression[, globals[, locals]])
expression
:表达式字符串
globals
:必须是一个字典
locals
:可以是任何 map 对象
最简单的表达式栗子
栗子一
print(eval("123"))print(eval("True"))print(eval("(1,2,3)"))print(eval("[1,2,3]")) # 输出结果123True(1, 2, 3)[1, 2, 3]
栗子二
print(eval("1+2")) x = 1print(eval('x+1'))# 输出结果32
栗子三
a = 1b = 2print(eval("[a,b]")) # 输出结果[1, 2]
带上 globals
# 使用 globalsx = 10g = {"x": 5}print(eval("x+1", g))# 输出结果6
在 eval 中提供了globals 参数
eval 的作用域就是 g 指定的这个字典,外面的 x = 10 被屏蔽掉了,eval 是看不见的,所以使用了 x 为 5 的值
x = 10y = 5g = {"x": 5}print(eval("x+1+y", g)) # 输出结果5 print(eval("x+1+y", g)) File "", line 1, in NameError: name 'y' is not defined
因为 global 参数没有 y 变量值,所以报错了
带上 locals
# 使用 localsa = 1g = {"a": 2, "b": 3}l = {"b": 30, "c": 4} print(eval("a+b+c", g, l))# 输出结果36
eval 的作用域变成了 globals + locals
locals 作用域优先级会高于 globals
locals 参数里面的值会覆盖 globals 参数里面的值
字符串转字典
# 字符串转字典jsons = "{'a':123,'b':True}"print(type(eval(jsons))) # 输出结果
带上 globals
print(eval("{'name':'linux','age':age}", {"age": 123}))# 输出结果{'name': 'linux', 'age': 123}
带上 locals
print(eval("{'name':'linux','age':age}", {"age": 123}, {"age": 24})) # 输出结果{'name': 'linux', 'age': 24}
内置函数栗子
# 内置函数print(eval("dir()"))print(eval("abs(-10)")) # 输出结果['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'g', 'jsons', 'l', 'x', 'y']10
报错的栗子
栗子一
print(eval("aa")) # 输出结果 print(eval("aa")) File "", line 1, in NameError: name 'aa' is not defined
栗子二
print(eval("[a,b,c]"))# 输出结果 print(eval("[a,b,c]")) File "", line 1, in NameError: name 'c' is not defined
栗子三
print(eval("if x: print(x)"))# 输出结果 print(eval("if x: print(x)")) File "", line 1 if x: print(x) ^SyntaxError: invalid syntax
因为 eval() 只接受表达式任何其他语句(如if、for、while、import、def、class)都将引发错误
感谢你能够认真阅读完这篇文章,希望小编分享的"Python中eval函数的表达式有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
结果
输出
栗子
表达式
函数
参数
字典
字符
字符串
篇文章
作用
价值
优先级
兴趣
同时
对象
就是
更多
朋友
格式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
锡山区重型软件开发生产过程
郑州市网络安全协会会员
服务器托管合同模板doc下载
公安局网络技术员工作时间
网络安全介绍 百度文库
net core软件开发
国产数据库原理分析
贵州网络安全问卷
大数据网络技术要学英语吗
网络安全的微电影吃饭
吉利研究院软件开发待遇
我的世界物理服务器搭建
德州智慧党建软件开发
赛门铁克卸载软件开发
三级网络技术过关
ccna网络技术培训
网络安全法 运营者
原神网络安全存在危险
双福互联网科技有限公司
亿联网络技术有限公司放假
石嘴山智能网站服务器
无线传感器网络技术英文
移动教育软件开发
芯片算力测试软件开发
磁盘服务器的效率由多种因素
服务器里怎么设一个公用网盘
undecember平台服务器离线
联想做软件开发轻松不
电子科技互联网 实验班
中小学 网络安全意识