In Python 3.8 we can finally write short recursive functions:

>>> (fac := lambda n: (1 if n<2 else n*fac(n-1))) at 0x000001AFD258D550>; >>> fac(4) 24 |

In the same way we can define the notorious fixed point combinator

>>> (Y:= lambda f: lambda *args: f(Y(f))(*args)) at 0x000001AFD257E0D0>; >>> fac = lambda f: lambda n: (1 if n<2 else n*f(n-1)) # fac in non recursive form >>> Y(fac)(4) 24 |

Life is good again!