Python中eval函数的表达式有哪些
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍了Python中eval函数的表达式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。eval 是干嘛的?解析字符串
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
靖江自动网络技术大概费用
研究网络安全的国外大学
网络安全等级保护推荐证书
数据库查询女性人数
服务器多硬盘管理
信息网络安全的第三个时钟
网络安全态势感知探针服务器
怎么查数据库服务器ip地址
武汉大学国家网络安全学院评价
宁德江夏网络技术有限公司
计算机二三级网络技术及应用
e3服务器主板
计算机网络技术专业开设院校
软件开发加班好吗
根据访问量算服务器配置
论网络安全法法律责任
网络安全的数据防线
请问不是数据库安全机制
山东口碑好的浪潮服务器在哪里
全军网络安全和信息化
数据库注册表ora
软件开发流程ppt模板
网络安全人员是什么工作
新乡市紫城网络技术有限公司
gaussdb数据库用什么语言
网络安全在身边征文
电信服务器托管多少钱
货宝宝云端服务器
软件开发要绘画
java显示数据库的图书信息