Skip to main content
idego
Python

Jeśli To Kaczka - Niech Kwacze jak Kaczka

Autor: Idego Group

Jeśli To Kaczka - Niech Kwacze jak Kaczka

Dynamiczne typowanie Pythona umożliwia szybkie prototypowanie i łatwiejsze testowanie, tworząc mniejsze, bardziej zrozumiałe bazy kodu. Jednak w miarę rozrastania się projektów ta pobłażliwa natura może stać się problematyczna — niejasne staje się, jakie typy są przekazywane i oczekiwane, spowalniając rozwój, gdyż programiści muszą je samodzielnie wydedukować.

Języki statyczne przyjęły funkcje wnioskowania typów, takie jak var w C#, auto w C++ i val w Scala, zmniejszając obciążenie pisaniem przy zachowaniu korzyści. Języki dynamiczne też nie stoją w miejscu. Narzędzia takie jak TypeScript i Flow dodają sprawdzanie typów do JavaScript bezproblemowo.

Trzy znaczące PEP-y zostały sporządzone w latach 2014-2015: PEP 482 (Przegląd literatury dla podpowiedzi typów), PEP 483 (Teoria podpowiedzi typów) i PEP 484 (Podpowiedzi typów). Ze współautorstwem Guido von Rossuma te funkcje były oczekiwane w Pythonie 3.5. Proponowany mechanizm opiera się na adnotacjach funkcji i opcjonalnych komentarzach, nie dodając żadnej dodatkowej składni i nie powodując kosztów czasu wykonania.

Mypy służy jako podstawowe narzędzie do sprawdzania typów. Pozwala na opcjonalne adnotacje bez zakłócania istniejącego wykonania kodu, umożliwiając iteracyjne wprowadzanie sprawdzania typów. Mypy wykrywa niezgodności typów wcześnie i obsługuje pliki stubów dla bibliotek zewnętrznych pozbawionych adnotacji.

PyCharm zapewnia solidne sprawdzanie typów oparte na IDE za pomocą docstringów i adnotacji funkcji. Inne godne uwagi narzędzia obejmują Jedi do autouzupełniania z wnioskowaniem typów, pysonar2 jako wnioskarz typów oraz tradycyjne lintery jak pylint i pyflakes oferujące szerszą analizę kodu.

Podpowiedzi typów reprezentują zrównoważone podejście łączące korzyści z dynamicznego i statycznego typowania bez konieczności rozległego refaktoryzowania. Ta funkcja obiecuje lepszą utrzymywalność dużych projektów przy zachowaniu elastyczności Pythona i zalet szybkiego rozwoju.

Powiązane artykuły