Гарантируется ли *args в Python3 порядок?

В Python3 я могу использовать * принять любое количество позиционных аргументов.

Пример, демонстрирующий это:

def a(*args):
    for argument in args:
        print(argument)
a(1,2,3,4)

Будет таким образом печатать:

1
2
3
4

Я не уверен, что порядок позиционных аргументов хранится в args на самом деле гарантированно будет сохранено?

Могу ли я доверять этому, если я позвоню a(1,2,3,4) затем args всегда (1,2,3,4) или это просто побочный эффект детали реализации?


Пытаясь разобраться в этом, я увидел этот порядок в **kwargs сохраняется с Python 3.6 и это указано в PEP-468, как только я не нашел упоминания о *args в этой связи.

1 ответ

Решение

Определенно, он сохраняет порядок, потому что * аргументы принимают / рассматривают аргумент как тип данных кортежа.

в кортеже Python есть свой порядок, всегда.

Только словарь - это один тип данных, который не будет следовать порядку в Python

Другие вопросы по тегам