测试积点老人 发表于 2019-2-26 10:47:31

python函数,形参不确定的情况下,传入一个列表。只循环一次,是为什么?

def buttown(*out):
for i in out:
print ('greet '+str(i))
buttown(list(range(1,10)))求大神赐教,为什么这个循环只打印了一次,就不会打印第二次了,为什么输出的结果是greet 。从逻辑上来说,代码没错啊,将1到10的列表传入到函数中。然后用变量i在列表out里循环。每循环一次打印一次变量的值。其结果不应该是这样的吗?求教,*out表示函数的参数未知。那我传入一个列表,在这里函数的实参变成几个了。初学python不懂的太多,求大神赐教,谢谢!
greet 1
greet 2
greet 3
greet 4
greet 5
greet 6
greet 7
greet 8
greet 9

cjjcq199688 发表于 2019-2-26 16:16:00

我觉得是 参数out是一个列表,你输入list(range(1,10)),只是相当于输入了一个参数也就是out=list(range(1,10))
我也是小白一个 不知道是不是这样理解:lol

cjjcq199688 发表于 2019-2-26 16:20:29

我觉得是 参数out是一个列表,你在方法中输入参数list(range(1,10)),只是这个列表的第一个参数 ,相当于out=list(range(1,10)) 所以只输出了一个结果
我也是小白一个 ,不知道这样理解是否正确

qqq911 发表于 2019-2-27 10:41:45

语法问题

jingzizx 发表于 2019-2-27 12:32:47

没有循环吧

abcsell 发表于 2019-2-27 17:15:38

没有设置循环条件

幸运黑猫 发表于 2019-3-5 11:13:51

应该是这样
def buttown(*out):
for i in out:
    print ('greet '+str(i))
buttown(*list(range(1,10)))

你函数定义的是一个不定长参数,所以要达到你说的效果,调用应该是buttown(1,2,3,4,5,6,7)这样,而讲一个list转为这样的参数,方法就是在传参时前面加*

你之前的写法,是将list本身作为不定长的第一个参数传进去了,所以拿到的out是[,]这样,作为数组遍历的时候,i是,所以不对
页: [1]
查看完整版本: python函数,形参不确定的情况下,传入一个列表。只循环一次,是为什么?