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

Python 3.7 pojawił się 27 czerwca 2018 roku, wprowadzając kilka przekonujących ulepszeń obok znaczących poprawek wydajności. Wydanie objęło funkcję breakpoint(), słowa kluczowe zarezerwowane dla async/await, metody __getattr__ i __dir__ na poziomie modułu, możliwości czasowania z rozdzielczością nanosekund, odroczoną ewaluację podpowiedzi 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 przez zmniejszenie wymagań dotyczących kodu szablonowego. Dzięki dekoratorowi @dataclass z nowego modułu dataclasses programiści mogą automatycznie generować metody __init__ i __repr__ przy minimalnym kodzie.
Poza podstawowym użyciem, klasy danych obsługują możliwości sortowania. 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ą czystsze oddzielenie między modelami danych a logiką biznesową. Deweloperzy mogą identyfikować obiekty danych w istniejących bazach kodu i refaktoryzować je przy użyciu dekoratorów, aby zmniejszyć liczbę linii przy jednoczesnym poprawieniu przejrzystości i możliwości utrzymania.