欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python_eval函数_2021-06-07

程序员文章站 2022-04-27 18:44:43
...

描述
eval() 函数用来执行一个字符串表达式,并返回表达式的值。

语法
以下是 eval() 方法的语法:

eval(expression[, globals[, locals]])
参数
expression – 表达式。
globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
返回值
返回表达式计算结果。

在全局中寻找执行

a=10;
print(eval("a+1"))  11

在g的优先作用域下执行

a=10;
g={'a':4}
print(eval("a+1",g))  5
a=10
b=20
c=30
g={'a':6,'b':8}
t={'b':100,'c':10}
print(eval('a+b+c',g,t))   116
print(eval('a+b+c',t,g))  	24   越在后面优先级越高,相当于b先被赋值为100,再被赋值为8

eval的本质可以说是去引号

>>> s="abck"
>>> print(eval(s))
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    print(eval(s))
  File "<string>", line 1, in <module>
NameError: name 'abck' is not defined\


这个之所以报错的原因是首先去引号得到了abck,所以会去看他是不是已经定义的变量,发现不是,就报错了
>>> s="abck"
>>> print(eval('s'))
abck

去掉引号,里面本身是个字符串就进行运算得到
>>> s='"sas"'
>>> print(eval(s))
sas
>>> a=10
>>> b=20
>>> c=30
>>> s='[a,b,c]'
>>> print(eval(s))    变量abc
[10, 20, 30]  		哈哈哈看到没去引号
>>> s='["a","b","c"]'
>>> print(eval(s))    
['a', 'b', 'c']		字符串abc
相关标签: python二级