繁体   English   中英

Python元组和sum()查询

[英]Python tuples and sum() inquiry

因此,根据Think Python教程,我继续进行了元组部分的讨论,我想问的是为什么这样做有效:

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

和这个

sum(1,2,3,4)

不是吗

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

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

没有多余的括号,您将使用四个单独的参数调用sum() ,因此第一个参数不是4个整数的元组,而只是一个整数。 那是行不通的,因为sum()希望第一个参数改为序列。 可选的第二个参数可用于提供不同的起始值(默认值为0),这意味着sum()最多接受2个参数。

内置sumsumall之间有细微的差别。 sum接收一个可迭代的(通常为listtuple )参数(总是一个参数!),而sumall接收与您传递的参数一样多的参数。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM