我需要知道for循环的作用,因为我可以直接打印x而无需循环 我尝试不带循环打印x我得到相同的答案,但不是同一行中的所有数字
def print_info(arg, *x):
print ("Output is: ")
print arg
for var in x:
print var
return;
print_info(10)
print_info(70, 60, 50)
答案 0 :(得分:0)
*x
是参数的元组,因此在使用for语句时,将逐个元素地打印该元组中的每个参数。但是,当您使用print(x)
时,您将打印整个元组:
def print_info(arg, *x):
print("Output is: ")
print(arg)
for var in x:
print(var)
print_info(1, 2, 3, 4, 5)
将打印:
Output is: 1 2 3 4 5
这段代码:
def print_info2(arg, *x):
print("Output is: ")
print(arg)
print(x)
print_info2(1, 2, 3, 4, 5)
将打印:
Output is: 1 (2, 3, 4, 5)
答案 1 :(得分:0)
参数*x
(或更常见的*args
)用于将非关键字的可变长度参数列表发送到函数。
这意味着第一个参数arg
之后的所有值都作为列表发送,因此您可以遍历它
在您的示例中:
print_info(10)
# 10 is arg
# () is *x (basically it is an empty list)
print_info(70, 60, 50)
# 70 is arg
# (60, 50) is *x
为什么不使用for循环打印x会得到两个不同的结果,是因为您将x打印为列表,而不是遍历它,
使用打印每个元素,为默认打印的每个元素添加“ \ n”
答案 2 :(得分:0)
您可以使用str.join()
合并所有值,并使用map()
将所有值转换为str
。
代码:
def print_info(arg, *x):
print " ".join(map(str, (arg,) + x))
print_info(10)
print_info(70, 60, 50)
输出:
10
70 60 50