Python元组和sum()查询

时间:2013-09-21 14:29:26

标签: python python-2.7 tuples

所以,我根据Think Python教程继续学习元组部分,我想问的是为什么这样做有效:

def sumall(*args):
    return sum(args)
print sumall(1, 2, 3, 4)

和这个

sum(1,2,3,4)

2 个答案:

答案 0 :(得分:2)

因为args元组,它是一个参数。以下功能与您的功能相同:

sum((1,2,3,4))

如果没有额外的括号,则使用四个单独的参数调用sum(),因此第一个参数不是4个整数的元组,而只是一个整数。这不起作用,因为sum()期望第一个参数是一个序列。可选的第二个参数可用于给出不同的起始值(默认值为0),这意味着sum()最多需要2个参数。

答案 1 :(得分:1)

内置sumsumall之间存在细微差别。 sum收到一个可迭代的(通常为listtuple)参数(总是一个参数!),sumall接收的参数数量与传递的数量相同。

为什么?因为您在函数签名中添加了星号,所以内置的sum将定义如下:

def sum(args): # note: no asterisk here
  result = 0
  for val in args:
    result += val
  return result