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