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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage