Какие функции Python 3.0 изменят ваше повседневное программирование?[закрыто]

StackOverflow https://stackoverflow.com/questions/340972

  •  19-08-2019
  •  | 
  •  

Вопрос

Py3k только что вышел и имеет кучу аккуратный новый материал!Мне любопытно, чему больше всего радуются питонисты?Какие функции повлияют на то, как вы пишете код ежедневно, или вы этого с нетерпением ждали?

Это было полезно?

Решение

Есть несколько вещей, которые меня очень интересуют:

Другие советы

Я надеюсь, что создание цепочки исключений зацепится. Потеря следов стека исключений из-за антипаттерна, представленного ниже, была моей любимой мозолью долгое время:

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, но это немного загадочно!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top