Мне любопытно, почему распаковка звездочки python3 возвращает мне экземпляр списка по сравнению с кортежем (который возвращается звездочкой в ​​аргументе функции). Это идиосинкразия питона, или этому есть веская причина.

In [1]: def foo(*args):
   ...:     print(type(args))
   ...:     

In [2]: foo(1, 2, 3, 4)
<class 'tuple'>

In [3]: first, *rest = (1, 2, 3, 4)

In [4]: type(rest)
Out[4]: list
3
skgbanga 25 Фев 2018 в 22:23

1 ответ

Лучший ответ

Они посчитали, что список будет проще обработать:

После короткого обсуждения списка python-3000 [1] , PEP был принят Гвидо в его нынешнем виде. Обсуждаются возможные изменения мы:

  • ...
  • Сделайте отмеченную звездочкой цель кортежем, а не списком. Это согласуется с функцией *args, но требует дальнейшей обработки результат сложнее.
3
user2357112 supports Monica 25 Фев 2018 в 22:26