Почему в Python 2.6 нет set-литералов и пониманий или dict-пониманий?[закрыто]
-
19-08-2019 - |
Вопрос
Python 2.6 был, по сути, ступенькой для упрощения перехода на Python 3.Многие функции, предназначенные для Python 3, были реализованы в версии 2.6, если они не нарушали обратную совместимость с синтаксисом и библиотеками классов.
Почему не были установлены литералы ({1, 2, 3}
), установить понимания ({v for v in l}
), или диктовать понимания ({k: v for k, v in d}
) среди них?В частности, понимание диктанта было бы большим благом...Я обнаружил, что использую значительно более уродливые dict([(k, v) for k, v in d])
ужасно много в последнее время.
Есть ли что-то очевидное, чего мне не хватает, или это была просто функция, которая не попала в кадр?
Решение
Это не было сделано, потому что никто не нашел на это времени.Там месяцами вскрывались ошибки, и никто их не комментировал:
Так что, вероятно, это было недостаточно важно, чтобы кого-то это волновало.
Другие советы
Все это изменения синтаксиса / грамматики.Такие изменения традиционно вводятся сначала в версии Python x.y с from __future__ import …
оператор, и реализован по крайней мере на Python x.(y + 1) версии.Такого перехода для этих изменений еще не произошло.
Технически, я ответил на ваше "почему".
Теперь, если вы имели в виду: “почему никто не нашел времени предложить, поддержать и внедрить что-то, что Я хотелось бы также иметь в 2.x, даже если они не знаю об этом с тех пор, как Я никогда не пытался предложить / поддержать перенос этих улучшений синтаксиса ни в comp.lang.python, ни в Python-Dev, ни Я никогда не пробовали даже прочитать PEPS?”, тогда ответ тоже кроется в вас, и вы можете предложить ответ сами.
HTH
Кстати, вам не следует использовать dict([(k,v) for k,v in d])
форме, но в dict((k,v) for k,v in d)
.Более эффективный.Зачем создавать промежуточный список?