Путаница в понимании кортежа и * аргументов в Python
Мне нужна функция, которая будет приниматьvariadic arguments
, Количество аргументов может варьироваться от 1 до 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)
Выход вышеуказанной программы:
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