包含 if 语句的 Lambda 函数

Lambda function containing if statement

有什么方法可以编写包含 if 和 lambda 的递归函数吗? 可以使用 lambda 重写它。

def factorial(x):
    if x <= 1:
        return 1
    return x * factorial(x - 1)

print(factorial(5)) 

没有,或者至少没有将函数分配给变量然后使用该名称调用它。但是你仍然不能在函数中使用任何语句。

无论如何,不​​要那样做。 lambda 函数 完全 类似于 Python 中的普通 def 函数,除了它不能包含语句的限制。

在 Python 中使用 lambda 的唯一原因是如果您只需要一个简单的可调用函数返回一些值,就可以避免定义命名函数。

是的,对于这种特定情况是可能的。

>>> factorial = lambda x: 1 if x < 1 else x * factorial(x - 1)
>>> factorial(5)
120

不过我不推荐它。标准函数定义对我来说似乎更具可读性。

>>> l = lambda i: 1 if i<=1 else i * l(i-1)
>>> l(5)
120
>>> 5*4*3*2*1
120