可变长度参数函数

时间:2019-09-09 14:56:08

标签: python

我需要知道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)

3 个答案:

答案 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