我需要一個函數,它將採取variadic arguments
。參數的個數可以從1變爲N.理解Python中的元組和*參數的困惑
def abc(*args):
print "ABC"
print args
print len(args)
def abc1(*args):
print "ABC1"
print args
print len(args)
print "------------"
tup = ("Hello123")
abc(*tup)
abc1(tup)
tup = ("Hello123", "Hello1234")
abc(*tup)
abc1(tup)
上述程序的輸出是;
ABC
('H', 'e', 'l', 'l', 'o', '1', '2', '3')
8
ABC1
('Hello123',)
1
------------
ABC
('Hello123', 'Hello1234')
2
ABC1
(('Hello123', 'Hello1234'),)
1
------------
如果我考慮該輸出,當我只通過1參數在abc1()
,元組的長度變爲8
(保持*tup
),其中如在abc1()
它示出了長度爲1
。 why and how?
但是,當我在上面的代碼中傳遞2個參數時,它的工作方式不同。輸出爲tuple
和tuple of tuple
。 因爲我寫的代碼,將所有N個
'tup =(「Hello123」)'不創建元組。這只是帶有括號的字符串「Hello123」。如果你想要一個包含一個元素的元組,你必須輸入一個尾隨逗號,例如:'tup =(「Hello123」,)'。這個語法看起來有點奇怪,但它需要這樣的表達式,如'x =(y/2)'不被解釋爲元組。 –