Гарантируется ли *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