Как вызывать выражения и присваивать им значения - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть словарь многих выражений, например,

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 голосов
/ 28 ноября 2018

Вы можете использовать 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)
0 голосов
/ 28 ноября 2018

Словари хранят значения, а не выражения.

Самое близкое, что вы можете сделать, это сохранить функции:

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

Затем вы можете вызвать их позже:

print(g['asd'](2, 3))  # 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...