Насколько надежен `func(* аргумент)`?
В python вы можете расширить последовательность в аргументы дискретных функций с помощью оператора star:
args = [2, 3]
print(pow(*args)) # same as `print(pow(2, 3))`
Есть даже хорошая идиома для транспонирования матрицы (список списков), например так: zip(*matrix)
, Поскольку в матрице может быть много-много строк, я задаюсь вопросом: насколько надежно разложение по звездам очень длинных последовательностей в аргументы? Во многих языках явные списки аргументов (f(a1, a2, a3, ..., ..., ...)
) имеют пределы длины значительно ниже пределов длины массива.
Существуют ли такие ограничения в (популярных реализациях) Python, и обрабатываются ли аргументы со звездообразным расширением таким образом, чтобы предотвратить попадание в такие пределы? (Например, если они непосредственно вставлены в вектор аргумента для функции с сигнатурой типа def function(*args)
). Это зависит от реализации или есть гарантии того, что можно решить? Я немного покопался в документации по python, но не смог найти обсуждения этого.