可变位置并打印值

variable positional and printing the values

def minimum (*n):
        print(n)
minimum(1)
minimum(1,2)
    
    
def func(*args):
     print(args)
    
values1 = (1,2)
values2 = ((1,2), (3,4))
func(values1)
func(values2)

OUTPUT:
(1,)
(1, 2)
((1, 2),)
(((1, 2), (3, 4)),)

Process finished with exit code 0

首先O/p: 我认为 python 期望传递多个参数,因此在 1 之后有一个逗号 (,)。 ?

第二个O/p: 现在 python 看到传递的多个参数没有逗号。它将args存储为一个元组?

第三个 O/p 和第四个 O/p: 为什么还有逗号?即使我通过了 2 个元组假设 python 期待像上面这样的多个元组?

帮我理解一下。

在函数调用 func(value2) 中,您传递了一个参数列表。它应该作为 func(*value2)

传递

func(value2) --> func(((1, 2), (3, 4)))

func(*value2) --> func((1, 2), (3, 4))

第一个输出显示一个逗号,因为如果没有它,1 是唯一的元素,(1) 将只是一个整数(括号将表达式 1 括起来),(1,) 用于区分元组和简单括号。

在第二个中,不需要尾随逗号来区分元组,因为有多个元素。

在第三个 O/p 中,您没有传递 12,而是传递了整个 (1,2),因此它只显示一项(即 (1,2))在一个元组中,并添加一个额外的逗号。第四次也一样:你通过了整个 ((1,2), (3,4)).