如何调用表达式并为其分配值

时间:2018-11-28 12:37:30

标签: python expression call

我有很多表达式的字典,例如

g={'asd':x+y,'sss':x-y}

我想定义两个函数aa和bb,这些函数返回这些表达式的求值。

g={'asd':x+y,'sss':x-y}
def aa(x,y):
    return g['asd']
def bb(x,y):
    return g['sss']
aa(2,3)

但是,我无法使它正确。

有人知道如何在python中执行此操作吗?

此外,实际上我有很多变量,而不仅仅是x,y,但是有x1,x2,x3 ... x100之类的变量。 我也有很多功能。

如果要这样做:

g = { 'asd': lambda x, y: math.exp(x)**y, 'sss': lambda x, y: x - y }
def aa(x,y):
    return g['asd'](x,y)
def bb(x,y):
    return g['sss'](x,y)
bb(2,3)

我将不得不复制x1,x2,x3 ... x100 100次。这太大了。

2 个答案:

答案 0 :(得分:4)

字典存储值,而不存储表达式。

您最能做的就是存储函数:

g = { 'asd': lambda x, y: x + y, 'sss': lambda x, y: x - y }

然后您可以稍后致电给他们:

print(g['asd'](2, 3))  # 5

答案 1 :(得分:0)

您可以使用eval:

g={'asd':'x+y','sss':'x-y'}
def aa(x,y):
    return eval(g['asd'])
def bb(x,y):
    return g['sss']
aa(2,3)