В обоих случаях 99, *a
с правой стороны расширяется в массив [99, 1, 2, 3, 4]
В
b, c = 99, *a
b
и c
становятся первыми двумя значениями массива, а остальная часть массива отбрасывается.
В
b, *c = 99, *a
b
становится первым значением из массива, а c
присваивается остальное (из-за знака слева).
99, *a
справа является примером того, что квадратные скобки вокруг массива являются необязательными в присваивании.
Более простой пример:
a = 1, 2, 3 → a == [1, 2, 3]
Или более явная версия вашего примера:
example = [99, *a] → example == [99, 1, 2, 3, 4]