Путаница в понимании кортежа и * аргументов в 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

Ответы на вопрос(1)

Ваш ответ на вопрос