Py3k только что вышел и имеет gobs аккуратный новый материал! Мне любопытно, о чем так волнует SO pythonistas? Какие функции повлияют на то, как вы ежедневно пишете код, или вы с нетерпением ждали?
Какие функции Python 3.0 изменят вашу повседневную кодировку?
Ответ 1
Есть несколько вещей, которые меня очень интересуют:
- Текст и данные вместо unicode и 8 бит
- Расширенная распаковка Iterable
- аннотации функций
- Бинарные литералы
- Новый синтаксис catch catch
- Несколько функций Python 2.6, например: оператор with
Ответ 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 только для того, чтобы найти две включенные библиотеки, которые предлагают эту функциональность, без очевидной причины, почему я должен выбирать один из них.
Ответ 5
Вот хорошая статья, которая объясняет новые функции и/или различия по отношению к python 2.x verses python 3.
Ответ 6
Несмотря на то, что они сделали для достижения минимально возможного курса миграции с интерпретируемыми языками, я считаю весь выпуск python3 десятилетним болезненным путем миграции. Поэтому я не считаю это особенно привлекательным.
Улучшения, которые они сделали, хороши и важны. Два разных типа для строк были реальным источником неприятностей повсюду, поэтому хорошо, что они избавились от объекта unicode и ввели объект байтов в сторону теперь unicode str.
Bignum vs. num-change был из удобства, и я думаю, что это тоже был хороший выбор. В целом они очистили язык от вредных компонентов, накопленных ими за последние десять лет.
Вторая худшая вещь, которую они сделали, была на 10% медленнее, так как скорость уже не была проблемой python.
Я считаю, что релиз python3 отталкивает репутацию python, а не улучшает его. Прямо сейчас они вернулись к началу с их языком, когда дело доходит до поддержки библиотеки.
Ответ 7
Не нужно делать столько же.
-
Не нужно беспокоиться об использовании
unicode()
илиu""
. -
Не нужно искать по документам
urllib
urllib2
иhttplib
, чтобы найти, где эти функции нужно для кодирования файла и загрузить его через запрос POST -
Не нужно беспокоиться о том, что
except TypeError, something:
будет ловить aTypeError
и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, но это довольно загадочно!