*args в Python - это способ в функции обрабатывать произвольное количество аргументов. Эти аргументы передаются как кортеж, что позволяет функции принимать более гибкое количество аргументов. Есть функция hello, которая принимает список с именами, проходит по нему циклом и каждого приветствует. Работает.
Но что если мы не хотим записывать имена в список, а хотим сразу же подавать их в функцию в виде аргументов? Подадим имена в вызове функции через запятую и воспользуемся * для запаковки аргументов в кортеж...