5 świetnych nowych funkcji w Pythonie 3.7
Autor: Idego Group

Python 3.7 pojawił się 27 czerwca 2018 roku, wprowadzając kilka przydatnych ulepszeń i znaczące poprawki wydajności. Wydanie objęło funkcję breakpoint(), słowa kluczowe zarezerwowane dla async/await, metody __getattr__ i __dir__ na poziomie modułu, pomiar czasu z rozdzielczością nanosekund, odroczoną ewaluację adnotacji typów, zmienne kontekstu i klasy danych.
Klasy danych stanowią najważniejszy postęp w tej wersji. Umożliwiają deweloperom tworzenie bardziej ustrukturyzowanego i czytelnego kodu dzięki ograniczeniu kodu szablonowego. Dzięki dekoratorowi @dataclass z nowego modułu dataclasses programiści mogą automatycznie generować metody __init__ i __repr__ przy niewielkiej ilości kodu.
Klasy danych obsługują również sortowanie. Parametr @dataclass(order=True) umożliwia operacje porównywania i sortowania. Funkcja field() pozwala na dostosowanie poszczególnych atrybutów, na przykład wykluczenie określonych pól z logiki sortowania.
Dekorator przyjmuje wiele parametrów kontrolujących generowane metody: init, repr, eq, order, unsafe_hash i frozen. Te parametry zapewniają precyzyjną kontrolę nad tym, które metody specjalne są automatycznie tworzone.
Klasy danych obsługują dziedziczenie z zachowaną kolejnością pól z klas nadrzędnych, utrzymując logiczne sekwencje atrybutów w hierarchiach klas.
Funkcja asdict() z modułu dataclasses zapewnia prostą konwersję do słownika, upraszczając serializację JSON do komunikacji API bez konieczności pisania rozbudowanego niestandardowego kodu.
Klasy danych ułatwiają wyraźne oddzielenie modeli danych od logiki biznesowej. Deweloperzy mogą identyfikować obiekty danych w istniejących bazach kodu i refaktoryzować je przy użyciu dekoratorów, aby zmniejszyć liczbę linii, a jednocześnie poprawić przejrzystość i ułatwić utrzymanie kodu.