Это действительно странно для меня, потому что по умолчанию я думал, что распаковка дает кортежи.
В моем случае я хочу использовать ключи prefix
для кэширования, поэтому кортеж предпочтительнее.
# The r.h.s is a tuple, equivalent to (True, True, 100)
*prefix, seed = ml_logger.get_parameters("Args.attn", "Args.memory_gate", "Args.seed")
assert type(prefix) is list
Но я думал, что вместо распаковки будет возвращен кортеж.
Вот соответствующий PEP: https://www.python.org/dev/peps/pep-3132/
- Обновление -
Учитывая комментарии и ответы ниже, в частности, я ожидал, что распаковка даст кортеж, потому что в аргументах функции аргумент распространения всегда является кортежем, а не списком.
Как указывал Джейсон, во время распаковки невозможно было бы заранее узнать длину результата, поэтому с точки зрения реализации универсальное начало должно начинаться как список для динамического добавления c. Преобразование его в список в большинстве случаев является пустой тратой усилий.
Семантически я предпочел бы иметь кортеж для согласованности.