包含if语句的Lambda函数

时间:2015-01-03 21:08:20

标签: python lambda

有没有办法如何编写包含lamba的递归函数? 可以使用lambda重写它。

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

print(factorial(5)) 

3 个答案:

答案 0 :(得分:4)

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

无论如何,不​​要这样做。除了不能包含语句的限制外,lambda函数完全与Python中的普通def函数完全相同。

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

答案 1 :(得分:2)

是的,这个具体案例是可能的。

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

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

答案 2 :(得分:2)

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