eval(string)函数
功能:将字符串string当成有效的表达式来求值并返回结果。
语法:
eval(source[, globals[, locals]])
参数:
- source:一个Python表达式或函数compile()返回的代码对象
- globals:可选。必须是dict对象
- locals:可选。任意map对象
python的全局名字空间存储在一个叫globals()
的dict对象中;局部名字空间存储在一个叫locals()
的dict对象中;可以使用print()查看globals()
和locals()
的dict对象。
示例
查看eval函数参数及类型
x = 1
y = 2
sum = 'x+y'
num = eval(sum)
print(type(sum),type(num),num)
# <class 'str'> <class 'int'> 3
globals与locals参数
x = 1
y = 2
SUM = 'x+y'
def sum():
x = -1
y = -2
print('没有参数:', eval(SUM))
print('参数globals:', eval(SUM, globals()))
print('参数locals:', eval(SUM, locals()))
print('参数:globals&locals', eval(SUM, globals(), locals()))
sum()
# 没有参数: -3
# 参数globals: 3
# 参数locals: -3
# 参数:globals&locals -3
调用函数
x = 1
y = 2
SUM = 'sum(x,y)'
def sum(x, y):
return x + y
print(eval(SUM))
# 3
string = 'list([1,"A",2,"B",3,"C"])'
print(eval(string))
# [1, 'A', 2, 'B', 3, 'C']