Python中eval函数的表达式有哪些
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要介绍了Python中eval函数的表达式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。eval 是干嘛的?解析字符串
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
数据库的er图主键
尤思安中级软件开发工程师证书
组合办公软件开发流程
明日之后怎样进入官方服务器
米泉软件开发
数据库隐私保护技术研究
数据库重载和重写的不同
大量读写数据库
当网络安全小卫士
定南天气预报软件开发
北京医院健康数据库
广讯通的服务器地址
区块链技术开发区块链软件开发
服务器删除数据可以恢复吗
电子网络技术都是
数据库中的内存
dota2协调服务器连接
川农草业科技学院互联网
青海军工守时模块服务器
数据库清除前后单元格
福建统一软件开发服务以客为尊
移动端软件开发相关技术
株洲it软件开发技能培训
中金众联互联网科技集团
前端软件开发入门知识
vue读取当前服务器地址
主修课程有计算机网络技术英语
软件开发公司规模多少
三级网络技术资料百度云
网络安全教育课课堂实录