Confusion beim Verständnis von Tupel und * Argumenten in Python
Ich brauche eine Funktion, die @ nehmen würvariadic arguments
. Die Anzahl der Argumente kann von 1 bis N variieren.
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)
Die Ausgabe des obigen Programms ist;
ABC
('H', 'e', 'l', 'l', 'o', '1', '2', '3')
8
ABC1
('Hello123',)
1
------------
ABC
('Hello123', 'Hello1234')
2
ABC1
(('Hello123', 'Hello1234'),)
1
------------
Wenn ich in diese Ausgabe schaue, wenn ich nur 1 Argument in @ übergeabc1()
, die Länge des Tupels wird8
(@ behalt*tup
), wo wie imabc1()
es zeigt die Länge ist1
. why and how?
Aber das gleiche funktioniert nicht anders, wenn ich im obigen Code 2 Argumente übergebe. Die Ausgabe erfolgt alstuple
undtuple of tuple
. Wie man dieses Problem löst, weil ich den Code schreiben muss, der für alle N @ funktionie