【发布时间】:2020-12-28 01:28:44
【问题描述】:
看了下面的例子:
def sum(items):
head, *tail = items
return head + sum(tail) if tail else head
我想知道是否可以将其更改为分别打印头和余数,所以我将其更改为:
def sum(items):
head, *tail = items
return head, sum(tail) if tail else head
但是,当我测试它时,它返回了这些结果:
sum([1,2,3])
(1, (2, (3, 3)))
而不是
(1,5)
我做错了什么?
【问题讨论】:
-
您不应该定义自己的名为
sum的函数,因为它隐藏了同名的内置函数。你的意思是递归调用你自己的sum函数,还是你认为内置的sum会在你的sum函数内部被调用? -
你为什么期望
return head, sum(tail) if tail else head去sum什么?你从不添加任何东西。您删除了添加 -
再次...只是为了让我们都清楚您的想法...您是要递归调用自己的函数,还是要调用内置的@987654330 @函数在你自己的
sum函数里面?这两种方法都是有效的。你到底想在这里做什么? -
对,我想我的问题是我没有注意到函数内部调用了函数。谢谢~
标签: python list function sum unpack