首页 后端 Python 正文

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]")) 
# 输出结果
123
True
(1, 2, 3)
[1, 2, 3]

例子二

print(eval("1+2")) 
x = 1
print(eval('x+1'))
# 输出结果
3
2

例子三

a = 1
b = 2
print(eval("[a,b]"))


# 输出结果
[1, 2]

带上 globals

# 使用 globals
x = 10
g = {"x": 5}
print(eval("x+1", g))
# 输出结果
6

在 eval 中提供了globals 参数

eval 的作用域就是 g 指定的这个字典,外面的 x = 10 被屏蔽掉了,eval 是看不见的,所以使用了 x 为 5 的值。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以价位@762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

x = 10
y = 5
g = {"x": 5}
print(eval("x+1+y", g)) 
# 输出结果
5
    print(eval("x+1+y", g))
  File "<string>", line 1, in <module>
NameError: name 'y' is not defined

带上 locals

# 使用 locals
a = 1
g = {"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))) 
# 输出结果
<class 'dict'>

带上 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("123"))
print(eval("True"))
print(eval("(1,2,3)"))
print(eval("[1,2,3]")) 
# 输出结果
123
True
(1, 2, 3)
[1, 2, 3]0

报错的例子

例子一

print(eval("123"))
print(eval("True"))
print(eval("(1,2,3)"))
print(eval("[1,2,3]")) 
# 输出结果
123
True
(1, 2, 3)
[1, 2, 3]1

例子二

print(eval("123"))
print(eval("True"))
print(eval("(1,2,3)"))
print(eval("[1,2,3]")) 
# 输出结果
123
True
(1, 2, 3)
[1, 2, 3]2

例子三

print(eval("123"))
print(eval("True"))
print(eval("(1,2,3)"))
print(eval("[1,2,3]")) 
# 输出结果
123
True
(1, 2, 3)
[1, 2, 3]3

因为 eval() 只接受表达式任何其他语句(如if、for、while、import、def、class)都将引发错误。

以上就是Python中eval函数的表达式用法示例的详细内容,更多关于Python中eval函数表达式的资料请关注其它相关文章!

打赏
海报

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:https://www.shouxicto.com/article/754.html

相关推荐

python怎么下载?

python怎么下载?

本文主要讲解关于Python中eval函数的表达式用法示例的详细内容,更多关于Python中eval函数表达式的资料请关注其它相关文章!...

Python 2022.08.26 0 900

初学者如何学习Python?

初学者如何学习Python?

本文主要讲解关于Python中eval函数的表达式用法示例的详细内容,更多关于Python中eval函数表达式的资料请关注其它相关文章!...

Python 2022.08.25 0 771

用 PaddleOCR 识别表情包文字

最近在做个表情包的小程序,涉及到表情包搜索功能。我们上传表情包的时候,只有一张图,怎么搜索?这个时候我们想到就是将表情包的文字提取出来,作为搜索的内容。那么这就需要用到 ocr 技术了。经过几个 oc...

Python 2022.08.20 0 826

Python解析参数的三种方法

Python解析参数的三种方法

本文主要讲解关于Python中eval函数的表达式用法示例的详细内容,更多关于Python中eval函数表达式的资料请关注其它相关文章!...

Python 2022.08.18 0 957

Python异常处理机制

Python异常处理机制

本文主要讲解关于Python中eval函数的表达式用法示例的详细内容,更多关于Python中eval函数表达式的资料请关注其它相关文章!...

Python 2022.08.16 0 752

发布评论

ainiaobaibaibaibaobaobeishangbishibizuichiguachijingchongjingdahaqiandaliandangaodw_dogedw_erhadw_miaodw_tuzidw_xiongmaodw_zhutouganbeigeiliguiguolaiguzhanghahahahashoushihaixiuhanheixianhenghorse2huaixiaohuatonghuaxinhufenjiayoujiyankeaikeliankouzhaokukuloukunkuxiaolandelinileimuliwulxhainiolxhlikelxhqiuguanzhulxhtouxiaolxhwahahalxhzanningwennonuokpinganqianqiaoqinqinquantouruoshayanshengbingshiwangshuaishuijiaosikaostar0star2star3taikaixintanshoutianpingtouxiaotuwabiweifengweiquweiwuweixiaowenhaowoshouwuxiangjixianhuaxiaoerbuyuxiaokuxiaoxinxinxinxinsuixixixuyeyinxianyinyueyouhenghengyuebingyueliangyunzanzhajizhongguozanzhoumazhuakuangzuohenghengzuoyi
支付宝
微信
赞助本站