python中eval函数的用法详解
2023-03-20 · 百度认证:北京一天天教育科技有限公司官方账号,教育领域创作者
Python中eval的用法:
Python eval()函数的功能:将字符串str当成有效的表达式来求值并返回计算结果。
语法:
eval(source[,globals[,locals]]) -> value
参数:
source:一个Python表达式或函数compile()返回的代码对象。
blobals:可培告选。必须是dictionary
locals:可选。任配灶明意map对象
如果提供了globals参数,那么它必须是dictionary类型;如果提辩巧供了locals参数,那么它可以是任意的map对象。
Python的全局名字空间存储在一个叫globals()的dict对象中;局部名字空间存储在一个叫locals()的dict对象中。我们可以用print(locals())来查看该函数体内的所有变量名和变量值。
x = 1
y = 1
num = eval("x+y")
print('num',num)
def g():
x = 2
y = 2
num1 = eval("x+y")
print('num1',num1)
num2 =eval('x+y',globals())
print('num2',num2)
num3 = eval("x+y",globals(),locals())
print('num3',num3)
g()
num2
num1 4
num2 2
num3 4
解析:num2因为有globals所以是全局变量,执行后结果为4;num3既有globals又有locals,仅在此情况下,优先采用locals的值,故计算结果是2。
1、字符串转换成列表
>>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>>type(a)
>>> b = eval(a)
>>> print b[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
>>> type(b)
2、字符串转换成字典
>>> a = "{1: 'a', 2: 'b'}"
>>> type(a)
>>> b = eval(a)
>>> print b{1: 'a', 2: 'b'}
>>> type(b)
3、字符串转换成元组
>运敏>> a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
>>> type(a)
>>> b = eval(a)
>>> print b([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))
>>> type(b)
4、eval()函数传进去的参数必须是字符串或者是对象
示例1:
>>>a=10;
>>>print(eval("a+1"))
>>>执行结果: 11
示例2:
>>>a=10;
>>>g={'a':4}
>>>print(eval("a+1",g))
>>>执行结果:5
示例3:
>>>a=10
>>>b=20
>>>c=30
>>>g={'a':6,'b':8}
>>>t={'b':100,'c':10}
>>>print(eval('a+b+c',g,t))
>>>执行结果:116 (a=6, b=100, c=10)
5、eval函数,eval去除引号后会检查到它是不是可计算的,如果可计算会将计算的结果打印出来,如果不可计算直接返回结果
示脊悄裂例1:不可计算》》》直接输出结果
>樱闭>>s='["a","b","c"]'
>>>print(eval(s))
>>>执行结果: ['a', 'b', 'c']
示例2:表达式可计算》》》计算之后输出结果
>>>s='abs(-10)'
>>>print(eval(s))
>>>输出结果:10
5、eval()函数,功能是将string变成算术表达式来执行
示例1:
>>>eval("1+2")
>>>执行结果: 3
示例2:
>>> eval("print(\"hello, world\")")
>>>输出结果:hello, world