Несколько дней назад разработчики выпустили первую бета-версию Python 3.10 — последней номерной версии языка на сегодняшний день. И несмотря на то, что это тестовая версия, уже сейчас на её основе можно узнать, что нас ждёт с грядущим крупным обновлением.
command = input()
match command.split():
case ["quit"]:
quit()
case ["load", filename]:
load_from(filename)
case ["save", filename]:
save_to(filename)
case _:
print (f"Command '{command}' not understood")
Отчёт в более старых версиях Python:
python
print ("Hello"
print ("What's going on?")
File ".\test.py", line 2
print ("What's going on?")
^
SyntaxError: invalid syntax
Отчёт в Python 3.10:
File ".\test.py", line 1
print ("Hello"
^
SyntaxError: '(' was never closed
Источник статьи: https://tproger.ru/news/pervaja-beta-python-3-10-chto-novogo/
Сопоставление структурных шаблонов
После нескольких неудачных попыток внедрить switch/case в Python, разработчики языка решили пойти иным путём. Они решили реализовать похожий функционал через сопоставление структурных шаблонов:command = input()
match command.split():
case ["quit"]:
quit()
case ["load", filename]:
load_from(filename)
case ["save", filename]:
save_to(filename)
case _:
print (f"Command '{command}' not understood")
Улучшение отчётов об ошибках
Теперь отчёт об ошибках в коде будет более наглядно показывать, что именно было сделано неверно.Отчёт в более старых версиях Python:
python
print ("Hello"
print ("What's going on?")
File ".\test.py", line 2
print ("What's going on?")
^
SyntaxError: invalid syntax
Отчёт в Python 3.10:
File ".\test.py", line 1
print ("Hello"
^
SyntaxError: '(' was never closed
Прочие нововведения
- оператор with теперь поддерживает многострочный синтаксис в скобках;
- переменные можно будет объявлять как псевдонимы типов;
- для сборки CPython потребуется OpenSSL 1.1.1 или новее.
Источник статьи: https://tproger.ru/news/pervaja-beta-python-3-10-chto-novogo/