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

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

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

2个回答

*允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。for i in out: 这条语句传入实参后相当于 for i in ([1, 2, 3, 4 , ...], ): 元组里只有一个元素。要想遍历输出,形参改为out就行

你把def buttown(*out) 中的* 去掉就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

10
形参和实参的关系。我理解的不对吗
8
VS2017 "const char *" 类型的实参与 "TCHAR*"类型的形参不兼容”
2
此函数的形参是个结构变量,而不是指针,所以给形参赋值可以修改实参的值吗?
1
使用函数输入一组二维数组
2
Unity C#通过动态链接库调用C++传递中文字符串乱码问题。
4
关于JAVA调用C++编写的DLL的问题
3
函数传递时,若为f(x=1,x=2,x=3)形式,得到的形参均为一,为什么会这样?
2
java8 stream源码中stream.collect(Collectors.toList()) 传参没有理解
1
Creat函数为什么会错呢?
2
自学C的十。。来天)?到函数部分,什么形参实参好混乱,为什么我总被编译器提示形参有重定义?
1
(2)深夜赶编程作业,有没有大佬来相助!!
2
C++运算符重载问题,为什么重载+-运算符时operator关键字前不需要加&,重载=时operator前必须加&号啊
3
【C语言】有关数组转置与指针应用的题目,求大佬解答
1
这是一个关于C++的问题
1
C语言函数不能返回局部变量或者形参的地址?为什么
0
函数fread的形参void *__restrict __ptr应该带入什么样的实参?
1
C中指向double型的指针作形参,在运算编译的时候报错,不知道原因?
1
翻译脚本无法生效,求Python前辈指点迷津。
1
python 关于tkinter.Tk().geometry("widthxheight+x+y")参数问题的深入提问。
1
把一个带形参的函数封装到另一个函数中