Confusión en la comprensión de tuplas y * args en Python
Necesito una función que estaría tomandovariadic arguments
. El número de argumentos puede variar de 1 a N.
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)
La salida del programa anterior es;
ABC
('H', 'e', 'l', 'l', 'o', '1', '2', '3')
8
ABC1
('Hello123',)
1
------------
ABC
('Hello123', 'Hello1234')
2
ABC1
(('Hello123', 'Hello1234'),)
1
------------
Si miro este resultado, cuando paso solo 1 argumento enabc1()
, la longitud de la tupla se convierte en8
(acuerdo*tup
), donde como en elabc1()
muestra la longitud es1
. why and how?
Pero lo mismo no funciona de manera diferente cuando paso 2 argumentos en el código anterior. La salida viene comotuple
ytuple of tuple
. Cómo resolver este problema porque tengo que escribir el código que funcionará para todos los N