Подтвердить что ты не робот

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

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

4b9b3361

Ответ 2

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

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

и легко получить оба из вышеперечисленных. Итак, как часть моей святой миссии против потерянных следов стека:

Люди, не забывайте о из при повторных исключениях! Спасибо.

Ответ 3

Совершенно откровенно, ничего из этого. Хотя я, вероятно, обнаружил, что использую какой-то новый синтаксис, я в основном использую Python для быстрого и простого сценариев и регулярных выражений.

Я думаю, что новые функции сделают много мелочей немного легче для многих людей и нескольких больших вещей для нескольких людей. Тем не менее, я скептически отношусь к любым утверждениям о том, что многие люди окажут огромную прибыль в производительности.

Короче говоря, я думаю, что эти изменения сделают вещи немного лучше в целом, но не ожидают никаких чудес.

Ответ 4

Не такая особенность, но я думаю, что очистка библиотеки будет очень полезной, особенно. новым программистам на питоне. Не раз я хотел что-то сделать на python только для того, чтобы найти две включенные библиотеки, которые предлагают эту функциональность, без очевидной причины, почему я должен выбирать один из них.

Ответ 6

Несмотря на то, что они сделали для достижения минимально возможного курса миграции с интерпретируемыми языками, я считаю весь выпуск python3 десятилетним болезненным путем миграции. Поэтому я не считаю это особенно привлекательным.

Улучшения, которые они сделали, хороши и важны. Два разных типа для строк были реальным источником неприятностей повсюду, поэтому хорошо, что они избавились от объекта unicode и ввели объект байтов в сторону теперь unicode str.

Bignum vs. num-change был из удобства, и я думаю, что это тоже был хороший выбор. В целом они очистили язык от вредных компонентов, накопленных ими за последние десять лет.

Вторая худшая вещь, которую они сделали, была на 10% медленнее, так как скорость уже не была проблемой python.

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

Ответ 7

Не нужно делать столько же.

  • Не нужно беспокоиться об использовании unicode() или u"".

  • Не нужно искать по документам urllib urllib2 и httplib, чтобы найти, где эти функции нужно для кодирования файла и загрузить его через запрос POST

  • Не нужно беспокоиться о том, что except TypeError, something: будет ловить a TypeError и something, или TypeError в `something..

И наоборот, нужно снова взглянуть на документы! Я знаю python достаточно хорошо, теперь я могу делать большинство вещей без ссылки на pydoc, но каждый раз, когда я это делаю, я обнаруживаю еще один полезный модуль или функцию.

Ответ 8

Оператор печати. <sniff> Я уже начинаю скучать.

На самом деле, прежде чем даже перейти на Python 2.6, мы очищаем print в пользу logging.debug. Это просто, чтобы привыкнуть к использованию print случайно для отладки, поддержки и разработки.

Что остается, некоторые программы, которые на самом деле производят материал на stdout. Для них мы можем ввести совместимую с 2.6/3.0 функцию "print" в одной из наших библиотек.

Ответ 9

Словарные понятия не обязательно разрушают землю, но они очень приятные.

Пока {k: v for k, v in list} длиннее dict(list), он более гибкий и самообучающийся.

Ответ 10

Одной из наиболее недооцененных особенностей Python 3 является введение абстрактных базовых классов. Это то, что не будет революционировать программирование на Python сразу, но представляет собой интересный переход от непринужденного подхода к набору уток в направлении более четких интерфейсов.

Более подробную информацию можно найти в PEP 3119.

Ответ 11

Почти все из них, поскольку я беру релиз Python 3 как мотивацию изучать язык.

Ответ 12

Unicode (utf-8) действительно важна для людей, живущих в странах, не говорящих по-английски.

Мне не нравилось указывать кодировку в начале файла, потому что я всегда забываю. Обычно мой текст совместим с ASCII, потому что я использую UTF-8, поэтому он работает без спецификации кодирования. Но если я напишу свое имя (с акцентом) или знак €, он сломается... Я закончил писать символы Юникода с их представлением \uxxxx, но это довольно загадочно!