我是靠谱客的博主 老实火车,这篇文章主要介绍eval函数介绍与用法,现在分享给大家,希望可以做个参考。

# eval函数

# eval(expression,globals=None,locals=None)

# expression:这个参数是一个字符串,python会使用globals字典和locals字典作为全局和局部的命名空间,将expression当做一个python

# 表达式(从技术上讲,是一个条件列表)进行解析和计算。

# globals:这个参数管控的是一个全局的命名空间,也就是我们在计算表达式的时候可以使用全局的命名空间中的函数,如果这个参数被提供了,

# 并且没有提供自定义的__builtins__,那么会将当前环境中的__builtins__拷贝到自己提供的globals里,然后才会进行计算。

# 关于__builtins__,它是python的内建模块,也就是python自带的模块,不需要我们import就可以使用的,例如我们平时使用的int、

# str、abs等都在这个模块中。

# locals:这个参数管控的是一个局部的命名空间,和globals类似,不过当它和globals中有重复的部分时,locals里的定义会覆盖掉globals

# 中的,也就是当globals和locals中有冲突的部分时,locals说了算,它有决定权,以它的为准。如果locals没有被 提供的话,则默认为globals。

下面举一些简单的用例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 将字符串str当成有效的表达式来求值并返回计算 a = "3*2" print(eval(a)) # 脱去外层"",当成表达式求值,此时返回6 a = 10 print(eval("a+1")) # 返回11 # 切片取数 a = "1234" print(eval(a[0])) # 取字符串第0个元素,此时返回1 print(eval(a[2])) # 返回3 # 在globals指定的情况下: a = 10 g = {'a': 4} print(eval("a + 1", g)) # 此时返回值为5,因为提供了globals参数,这时eval作用域就是g指定的字典,也就是说外面的a=10被屏蔽掉 # 在locals指定的情况下: a = 10 b = 20 c = 30 g = {'a': 6, 'b': 8} t = {'b': 100, 'c': 10} print(eval('a+b+c', g, t)) # 此时返回值为116,g屏蔽掉全局变量a和b,locals又与globals起冲突,此时locals起决定作用,b值为t中的b值100 a = '["a", "b", "c"]' print(eval(a)) # 返回['a', 'b', 'c']

最后

以上就是老实火车最近收集整理的关于eval函数介绍与用法的全部内容,更多相关eval函数介绍与用法内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部