*a, b = [1, 2, 3] означает, что последний элемент списка присваивается b, а первые два уходят в *aПри вызове
func(*a), переменная a будет распакована в отдельные аргументы функции, таким образом она будет вызвана как func(1, 2)Внутри функции
print(*var) принимает переменное количество аргументов и выводит их значения, разделённые пробелом. Т.е 1 2