Python中为什么这个接受一个 list 并求积的函数返回 None?

如图


Python中为什么这个接受一个 list 并求积的函数返回 None?

9 回复

return 呢?


我遇到过这个问题,通常是因为在函数里直接修改了列表或者忘了写 return

最常见的情况是这样的:

def multiply_list(lst):
    result = 1
    for num in lst:
        result *= num
    # 这里没有 return,所以默认返回 None

调用的时候:

my_list = [1, 2, 3, 4]
print(multiply_list(my_list))  # 输出 None

修复方法:在函数末尾加上 return result

def multiply_list(lst):
    result = 1
    for num in lst:
        result *= num
    return result  # 加上这一行

还有一种可能是你用了 list.append() 或类似原地修改的方法,然后直接打印列表操作的结果,比如:

def wrong_multiply(lst):
    lst.append(10)  # 原地修改,返回 None
    # 没有 return

这样调用也会得到 None

总结:检查函数最后有没有 return

看标题我就猜没 return 23333 毕竟我也碰到过

prod = lambda L: reduce (lambda x,y : x*y , L)
唔………
感觉又是一行无法维护的 lambda 地狱………

def prod(L):
return reduce(lambda x,y : x*y, L)

这样好点

不太明白, return 我不是已经加了嘛

已经加了 return 了


<br>from functools import reduce<br><br>def prod(L):<br> def qiuji(x, y):<br> return x * y<br> return reduce(qiuji, L)<br>print(prod([3, 5, 7, 8]))<br>

你这个没有 return 啊,prod 函数得有一个返回值

回到顶部