Il ne fonctionne que pour les opérations basées mathématiques, mais vous pouvez regarder SymPy « objet de Lambda()
.Il a été conçu exactement à cet effet:
>>> from sympy import *
>>> x = Symbol('x')
>>> l = Lambda(x, x**2)
>>> l
Lambda(_x, _x**2)
>>> l(3)
9
Il supporte même assez l'impression:
>>> pprint(l)
⎛ 2⎞
Λ⎝x, x ⎠
Pour faire votre égal exemple, nous l'objet sympy équation():
>>> l1 = Lambda(x, Eq(x, 2))
>>> l1
Lambda(_x, _x == 2)
>>> l1(2)
True
Il prend en charge l'extension des arguments partiels:
>>> y = Symbol('y')
>>> l2 = Lambda((x, y), x*y + x)
>>> l2(1)
Lambda(_y, 1 + _y)
>>> l2(1, 2)
3
Et bien sûr, vous obtenez l'avantage d'obtenir toutes l'algèbre informatique sympy:
>>> l3 = Lambda(x, sin(x*pi/3))
>>> pprint(l3(1))
⎽⎽⎽
╲╱ 3
─────
2
Par ailleurs, si cela ressemble à un bouchon sans vergogne, c'est parce qu'il est. Je suis l'un des développeurs de SymPy.
Veuillez utiliser 'def x (args)' au lieu de 'x = lambda (args)'. Cela ne répond pas à votre question, mais s'il vous plaît utilisez def pour cela. –