Объясните код и раскройте функцию

Изучаю Phyton по книге A Byte Of Phyton и не понимаю "Переменные числа параметров" Можете просто раскрыть функцию, то есть объяснить почему пишется то или иное слово или функция

Сама функция:

def total(a=5, *numbers, **phonebook):
    print('a', a)

    #проход по всем элементам кортежа
    for single_item in numbers:
        print('single_item', single_item)

    #проход по всем элементам словаря
    for first_part, second_part in phonebook.items():
        print(first_part,second_part)

print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))

Ответы (1 шт):

Автор решения: S. Nick

В Python определения и вызовы функций имеют нюансы, которые вы должны прочувствовать на данном примере.

Я добавил несколько вызовов функции с разными аргументами, запустите пример и посмотрите как они (аргументами) принимаются в функции. Обратите внимание на параметр a, который имеет значение по умолчанию 5 (a=5)

В программировании функции могут не только возвращать данные, но также принимать их, что реализуется с помощью так называемых параметров, которые указываются в скобках в заголовке функции. Количество параметров может быть любым.

Параметры представляют собой локальные переменные, которым присваиваются значения в момент вызова функции. Конкретные значения, которые передаются в функцию при ее вызове, будем называть аргументами.

def total(a=5, *numbers, **phonebook):
    print(f'\ndef total: \n\ta={a}, \n\tnumbers   -> {numbers} \n\tphonebook -> {phonebook}')

    print('\n# проход по всем элементам кортежа')
    for single_item in numbers:
        print('single_item: ', single_item)

    print('\n# проход по всем элементам словаря')
    for first_part, second_part in phonebook.items():
        print(first_part, second_part)
        #      ключ         значение

# вызов функции 1 `total`
total( 10,  1, 2, 3, Jack=1123, John=2231, Inge=1560 )
#      a    numbers  |<------- phonebook --------->|

# вызов функции 2 `total`
total()

# вызов функции 3 `total`
total('Hello', 'World', Привет='JustLearn')
→ Ссылка