Какие функции Python 3.0 изменят ваше повседневное программирование?[закрыто]
-
19-08-2019 - |
Вопрос
Py3k только что вышел и имеет кучу аккуратный новый материал!Мне любопытно, чему больше всего радуются питонисты?Какие функции повлияют на то, как вы пишете код ежедневно, или вы этого с нетерпением ждали?
Решение
Есть несколько вещей, которые меня очень интересуют:
- Текст и данные вместо того, чтобы юникод и 8 бит
- Расширенная Повторяющаяся Распаковка
- Примечания к функциям
- Двоичные литералы
- Новый синтаксис перехвата исключений
- Ряд функций Python 2.6, например:тот самый с заявление
Другие советы
Я надеюсь, что создание цепочки исключений зацепится. Потеря следов стека исключений из-за антипаттерна, представленного ниже, была моей любимой мозолью долгое время:
try:
doSomething( someObject)
except:
someCleanup()
# Thanks for passing the error-causing object,
# but the original stack trace is lost :-(
raise MyError("Bad, bad object!", someObject)
Я знаю, я знаю, добавление некоторой контекстной информации в исходное исключение и сохранение исходной трассировки стека было возможно, но это требовало действительно уродливого хака. Теперь вы можете (и должны! ) просто:
raise MyError("Bad, bad object!", someObject) from original_exception
и легко получить оба вышеперечисленных. Итак, как часть моей священной миссии против следов потерянного стека:
Ребята, не забывайте о предложении from при поднятии исключений! Спасибо.
Откровенно говоря, ничего из этого. Хотя я, вероятно, обнаружу, что использую некоторый новый синтаксис, я в основном использую Python для быстрых и простых сценариев и регулярных выражений.
Я думаю, что новые функции сделают многие мелочи немного проще для многих людей, а некоторые большие вещи - легким для нескольких людей. Однако я скептически отношусь к любым утверждениям о том, что многие люди в конечном итоге найдут огромный прирост производительности.
Короче говоря, я думаю, что эти изменения в целом улучшат ситуацию, но не ожидайте никаких чудес.
Не такая уж особенность, но я думаю, что очистка библиотеки будет очень полезна, особенно. новым программистам на Python. В более чем одном случае я хотел сделать что-то на python, чтобы найти две включенные библиотеки, которые предлагают эту функциональность, без очевидной причины, по которой я должен выбрать одну над другой. Р>
Вот хорошая статья, которая объясняет новые возможности и / или различия в отношении Python 2.x стихи Python 3.
http: //www.b-list. орг / блог / 2008 / декабрь / 05 / питон-3000 /
Несмотря на то, что они сделали, чтобы достичь наименьшего возможного курса миграции с интерпретируемыми языками, я считаю, что весь выпуск python3 представляет собой десять лет мучительного пути миграции. Поэтому я не нахожу это особенно привлекательным.
Улучшения, которые они сделали, все хорошие и важные. Два разных типа для строк были повсеместным источником раздражения, поэтому хорошо, что они избавились от объекта Юникод и представили объект байтов в стороне теперь Юникод str.
bignum vs. num -change были из удобства, и я думаю, что это тоже был хороший выбор. В целом они очистили язык от вредных компонентов, накопленных за последние десять лет.
Второе худшее, что они сделали, это медленная реализация на 10%, как будто скорость уже не была проблемой Python.
Я считаю, что выпуск python3 скорее поднимет репутацию python, чем улучшит ее. Прямо сейчас они вернулись к своему языку, когда дело доходит до поддержки библиотеки.
Не нужно делать так много..
Не нужно беспокоиться об использовании
unicode()
илиu""
.Хотя нет необходимости искать документы по
urllib
urllib2
иhttplib
чтобы найти, где это работает, мне нужно закодировать файл и загрузить его с помощью POST-запросаНе нужно беспокоиться о том, будет ли
except TypeError, something:
поймаетTypeError
иsomething
, илиTypeError
во что-нибудь..
И наоборот, приходится еще раз заглядывать в документы!Я достаточно хорошо знаю python, теперь я могу делать большинство вещей, не обращаясь к pydoc, но каждый раз, когда я это делаю, я обнаруживаю какой-нибудь другой полезный модуль или функцию.
Заявление о печати. <sniff>
Я уже начинаю скучать по нему.
На самом деле, прежде чем даже перейти к Python 2.6, мы очищаем print
в пользу logging.debug
. Это просто для того, чтобы избавиться от привычки использовать <=> небрежно для отладки, поддержки и разработки.
Остаются некоторые программы, которые на самом деле производят вещи на stdout. Для них мы можем ввести совместимый & Quot; print & Quot; 2.6 / 3.0; функция в одной из наших библиотек.
Понимание словаря не обязательно потрясающее, но очень приятное.
Хотя {k: v for k, v in list}
длиннее dict(list)
, он более гибкий и понятный.
Одной из наиболее недооцененных возможностей Python 3 является введение абстрактных базовых классов. Это то, что не будет революционизировать программирование на Python сразу, но представляет интересный переход от подхода свободной печати на утке к направлению к более определенным интерфейсам.
Дополнительную информацию можно найти в PEP 3119 .
Почти все они, поскольку я воспринимаю выпуск Python 3 как мотивацию для изучения языка.
Юникод (utf-8) действительно важен для людей, живущих в неанглоязычных странах.
Мне не понравилось указывать кодировку в начале файла, потому что я всегда забываю. Обычно мой текст совместим с ASCII, потому что я использую UTF-8, поэтому он работает без спецификации кодировки. Но если я напишу свое имя (с акцентом) или & # 8364; знак, он ломается ... В итоге я написал символы юникода с их представлением \ uxxxx, но это немного загадочно!