6 лучших полезных функций Python 3.10
Python 3.10 может похвастаться тем, что является одной из самых стабильных версий, доступных для загрузки пользователями, и будет выпущен позже в этом году. В недавно выпущенной версии будет много заметных изменений, таких как простые в использовании функции как для новичков, так и для опытных программистов.
Яркие улучшения в новой версии Python включают введение структурного сопоставления с образцом, улучшенные сообщения об ошибках, новые операторы объединения, точные номера строк для отладки и многое другое.
Вот что вам нужно знать о Python 3.10:
Сопоставление структурных шаблонов в Python 3.10
Сопоставление структурных шаблонов упрощает написание кода и продолжает оставаться одним из основных моментов последней версии Python. Python нацелен на улучшение ранее существовавших операторов регистра совпадений, представленных в предыдущих версиях языка программирования. Он обновил существующие операторы совпадений в Python.
Давайте быстро познакомимся с реализациями сопоставления структурных шаблонов:
Оператор match-case уже некоторое время является частью языка Python. Этот оператор в основном используется, чтобы избежать утомительной работы по многократному написанию оператора if-else .
Вы можете сопоставлять объекты с похожими свойствами, используя эту функцию в новой сборке.
match media_object:
case Image(type="jpg"):
# Return as-is
return media_object
case Image(type="png") | Image(type="gif"):
return render_as(media_object, "jpg")
case Video():
raise ValueError("Can't extract frames from video yet")
case other_type:
raise Exception(f"Media type {media_object} can't be handled yet")
Новая библиотека Python распознает такие объекты, как jpg, gif и видео. Этот код может работать без сбоев, не вызывая ошибок.
2. Улучшенные сообщения об ошибках.
Каждый программист, вероятно, понимает важность ошибок при написании кода и то, насколько раздражающими могут быть некоторые типы ошибок. Предыдущие версии Python выдавали сообщения об ошибках, как только возникали проблемы с синтаксисом. Это могло быть связано с неправильным синтаксисом, отсутствующими ключевыми словами, неправильными или ошибочными ключевыми словами, среди других проблем.
Эти сообщения об ошибках были далеки от совершенства, поскольку новичкам (иногда даже опытным пользователям) становилось трудно определить настоящую причину ошибки в своих кодах. Как программист, Google продолжает быть вашим союзником в расшифровке причин различных сообщений об ошибках.
Например, многие люди могут не знать, почему Python выдает следующую ошибку:
SyntaxError: unexpected EOF while parsing error message.
Отсутствие ясности в таких утверждениях побудило новейшую версию Python улучшить существующий набор сообщений об ошибках.
Старые сообщения были заменены понятными сообщениями об ошибках, например:
{никогда не закрывался неожиданный EOF во время синтаксического анализа
Еще несколько изменений включают:
Ошибки атрибутов, например:
from collections import namedtoplo
модуль "коллекции" не имеет атрибута "namedtoplo". Возможно, вы имели в виду: namedtuple?
Сообщения NameError изменены, чтобы выглядеть так:
new_var = 5
print(new_vr)>
NameError: имя new_vr не определено. Возможно, вы имели в виду: new_var?
3. Заключенные в скобки менеджеры контекста
Новые менеджеры контекста в скобках могут сделать ваш код более элегантным. Несмотря на то, что это не основная функция, она может легко сделать ваш код менее громоздким. Эта функция полезна, если вы работаете в команде и ваш код должен быть структурирован.
Представьте, что вы пишете такое утверждение:
with open('file1.txt', 'r') as fin, open('file2.txt', 'w') as fout:
fout.write(fin.read())
Приведенный выше код работает, но первая строка слишком длинная и выглядит неуклюже. Вы можете разбить строку с помощью обратной косой черты ( ) и сделать код структурированным:
with open('file1.txt', 'r') as fin, open('file2.txt', 'w') as fout: fout.write(fin.read())
С появлением нового диспетчера контекста в скобках вы также можете разорвать строку, используя круглые скобки:
with (open('file1.txt', 'r') as fin,
open('file2.txt', 'w') as fout):
fout.write(fin.read())
4. Оператор Союза нового типа
Небольшая, но удобная функция в Python 3.10 – это новый тип оператора объединения. Каждый выпуск Python поставляется с предопределенным набором функций подсказки типов.
Оператор объединения включает условную логику; например, int или float можно записать как Union [X, Y] . Новый оператор объединения также может быть выражен как int | float .
Введение нового операнда объединения в Python 3.10 позволяет сэкономить время и делает код четко определенным.
Например:
def f(x: int | float) -> float:
return x * 3.142
f(1) # pass
f(1.5) # pass
f('str') # linter will show annotation error
5. Точные номера строк для отладки
Возможно, вы уже много раз замечали, что трассировка ошибок не перенаправляет вас на нужную строку, где произошла ошибка. Это затрудняет отладку кодировщикам, которые только начали писать код.
Некорректное отслеживание ошибок особенно очевидно при написании sys.settrace и связанных с ним инструментов на Python. В новой версии это значительно улучшено, и вы можете видеть точные номера строк при возникновении ошибки.
Чтобы получить более точный номер строки, Python 3.10 сдвигает свою надежность с текущего атрибута co_Inotab и использует новый атрибут метода co_lines () . Этот атрибут работает таким образом, что f_lineo всегда содержит точный номер строки.
1. for (
2. x) in [1]:
3. pass
4. return
6. Отложенная оценка аннотаций
В Python оценка аннотации типа выполняется во время определения функции. Это означает, что аннотации типов оцениваются построчно, сверху вниз.
Несмотря на то, что это может показаться лучшим вариантом, у этого подхода есть две проблемы:
- Подсказки типов относятся к типам, которые еще не определены и не работают; эти подсказки должны быть выражены в виде строк.
- Импорт модуля замедлился, так как подсказки типов выполняются в реальном времени.
Чтобы избежать проблем с выполнением, аннотации хранятся в _annotations_, а оценка выполняется вместе. Это позволяет выполнять прямую ссылку, поскольку сначала выполняется импорт модуля, что сокращает время инициализации.
Работа с новейшими функциями в Python 3.10
Новейшая версия Python выйдет 4 октября 2021 года; он обещает исправить ошибки, которые присутствуют в существующих версиях. Следующие версии улучшат текущую версию 3.10.
Структурное сопоставление образцов – это изюминка этого нового обновления, которое упрощает написание кодов для похожих объектов. Другие функции, такие как менеджеры контекста в скобках и операторы объединения нового типа, призваны сделать код более простым и эффективным.
Тем не менее, в существующих версиях Python есть несколько отличных методов обработки исключений. Вы можете эффективно использовать функциональные возможности Python.