努力学Python的 发表于 2022-8-6 19:17:37

python 函数问题

编写函数,计算列表中所有奇数位索引所对应的元素的和。然后调用该函数来计算输入的列表中所有奇数位索引所对应的元素的和。
def summ(l):
    s=0
    for i in range(len(l)):
      if i%2!=0:
            s=s+l
    return s
l=eval(input())
print(summ(l))

问题:输入的是列表,为什么不写成 def summ(*l)?

临时号 发表于 2022-8-6 19:31:23

*l是C语言的写法,代表这是一个指针
而python中都是对象,所以不用写成*l,只用写l就可以了

努力学Python的 发表于 2022-8-6 19:56:05

临时号 发表于 2022-8-6 19:31
*l是C语言的写法,代表这是一个指针
而python中都是对象,所以不用写成*l,只用写l就可以了

python 写函数的时候,加*不是为了把实参组合在一起吗,这里是列表啊,为啥不写

临时号 发表于 2022-8-6 20:01:35

努力学Python的 发表于 2022-8-6 19:56
python 写函数的时候,加*不是为了把实参组合在一起吗,这里是列表啊,为啥不写

这里不需要把实参组合在一起啊,l是一个整体,是一个对象,我传入一个整体,当然不需要把它们组合在一起啊

努力学Python的 发表于 2022-8-6 22:48:06

临时号 发表于 2022-8-6 20:01
这里不需要把实参组合在一起啊,l是一个整体,是一个对象,我传入一个整体,当然不需要把它们组合在一起啊

为啥

临时号 发表于 2022-8-7 00:26:42

努力学Python的 发表于 2022-8-6 22:48
为啥

举个例子
def func1(*l):
    pass
def func2(l):
    pass

func1(1,2,3,4)
func2()
func1函数传入的是4个实参,而func2函数传入的是一个实参
*是为了把实参组合在一起,而func2函数只有一个实参,你怎么将它们组合在一起

努力学Python的 发表于 2022-8-7 11:48:35

临时号 发表于 2022-8-7 00:26
举个例子

func1函数传入的是4个实参,而func2函数传入的是一个实参


哦哦,是这样啊,我以为把实参组合在一起就要是,输入的是列表类型什么的,恍然大悟
页: [1]
查看完整版本: python 函数问题