Единственный способ, которым я могу придумать, состоит в том, чтобы дать функции имя:
fact = lambda x: 1 if x == 0 else x * fact(x-1)
или поочередно, для более ранних версий python:
fact = lambda x: x == 0 and 1 or x * fact(x-1)
Обновление : используя идеи из других ответов, я смог втиснуть факторную функцию в одну безымянную лямбду:
>>> map(lambda n: (lambda f, *a: f(f, *a))(lambda rec, n: 1 if n == 0 else n*rec(rec, n-1), n), range(10))
[1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
Так что это возможно, но не очень рекомендуется!