我是靠谱客的博主 老实火车,最近开发中收集的这篇文章主要介绍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。

下面举一些简单的用例:

# 将字符串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函数介绍与用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部