Funcionará solo para operaciones basadas en matemática, pero puede consultar el objeto SymPyLambda()
.Fue diseñado exactamente para este propósito:
>>> from sympy import *
>>> x = Symbol('x')
>>> l = Lambda(x, x**2)
>>> l
Lambda(_x, _x**2)
>>> l(3)
9
Incluso soporta bastante impresión:
>>> pprint(l)
⎛ 2⎞
Λ⎝x, x ⎠
para hacer su igual ejemplo, nosotros el sympy la ecuación() del objeto:
>>> l1 = Lambda(x, Eq(x, 2))
>>> l1
Lambda(_x, _x == 2)
>>> l1(2)
True
se admite la expansión parcial de argumentos:
>>> y = Symbol('y')
>>> l2 = Lambda((x, y), x*y + x)
>>> l2(1)
Lambda(_y, 1 + _y)
>>> l2(1, 2)
3
Y, por supuesto, se obtiene la ventaja de obtener todos álgebra computacional de sympy:
>>> l3 = Lambda(x, sin(x*pi/3))
>>> pprint(l3(1))
⎽⎽⎽
╲╱ 3
─────
2
Por cierto, si esto suena como un enchufe descarado, es porque lo es. Soy uno de los desarrolladores de SymPy.
Por favor, use 'def x (args)' en lugar de 'x = lambda (args)'. Esto no responde su pregunta, pero use def para esto. –