eval()的浅析

语法上:调用的是:eval(expression,globals=None, locals=None)返回的是计算结果

其中:

    expression是一个参与计算的python表达式

    globals是可选的参数,如果设置属性不为None的话,就必须是dictionary对象了

    locals也是一个可选的对象,如果设置属性不为None的话,可以是任何map对象了

python是用命名空间来记录变量的轨迹的,命名空间是一个dictionary,键是变量名,值是变量值。

当一行代码要使用变量 x 的值时,Python 会到所有可用的名字空间去查找变量,按照如下顺序:

1)局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x, 或一个参数 x,Python 将使用它,然后停止搜索。

2)全局名字空间 - 特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python 将使用它然后停止搜索。

3)内置名字空间 - 对每个模块都是全局的。作为最后的尝试,Python 将假设 x 是内置函数或变量。

python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。我们可以用print (locals())来查看该函数体内的所有变量名和变量值。

其实我看了网上很多的讲解 主要的意思就是 如果在没有特殊内嵌表达式在里面的话 这个eavl函数只是简单的  把冒号去掉,里面的是列表 字典 元组 表达式就变成其本身。

主要的作用在哪里呢? 目前所做的一些练习上来看,eval函数对 读取文本里面的参数有一定的作用 在已经格式化如内容为 list dict的文本文件里 就可以直接通过eavl把string类型格式化成应有的类型 并且进行参数调用

猜你喜欢

转载自www.cnblogs.com/sshflying/p/9446903.html