Blog IT, Blog Marketing

Python otrzymuje wyszukiwanie po wzorcach

Python otrzymuje wyszukiwanie po wzorcach

Marcin Sarna , 11.02.2021 r.

Rada sterująca Pythona zaakceptowała kontrowersyjną propozycję dodania do tego języka tzw. pattern matchingu.

Zmiana rewolucyjna?

Decyzja co do tego jak powinno się wyszukiwać w Pythonie była trudna. Najlepiej opisuje to wpis na liście mailingowej LWN.net:

Zdajemy sobie sprawę, że pattern matching jest rozległą zmianą w Pythonie i że osiągnięcie konsensusu w całej społeczności jest prawie niemożliwe. Różni ludzie mają zastrzeżenia lub obawy dotyczące różnych aspektów semantyki i składni (podobnie zresztą jak sama Rada Sterująca). W rezultacie, po długich rozważaniach, przejrzeniu wszystkich rozmów dotyczących PEP, a także konkurencyjnych propozycji i istniejących wyników ankiet oraz po kilku osobistych dyskusjach z autorami PEP, jesteśmy przekonani, że dopasowywanie wzorców określone w PEP 634 będzie wspaniałym dodatkiem do języka Python.

Zdecydowano się więc zaakceptować PEP 634 i towarzyszące mu PEP 635 i 636, zbiorczo znane jako Pattern Matching PEPs. Trzeba przyznać, że dopasowywanie po wzorcach to znacząca zmiana w Pythonie a osiągnięcie konsensusu trwało długo.

Prace wdrażające dopiero przed twórcami języka

Rada Sterująca podkreśla, że zdaje sobie sprawę, że tak dużej i istotnej, nowej funkcji, musi towarzyszyć obszerna dokumentacja i specyfikacja, także w sekcji samouczka dokumentacji. Taka wysokojakościowa dokumentacja musi być, zdaniem rady, wprowadzona jeszcze w pierwszym wydaniu Pythona 3.10. Nieopracowanie dokumentacji dla tej wersji języka byłoby, jak to określono, blokerem tego wydania. A, że Python będzie miał własną dokumentację dla wybranego PEP jest pewne – w wiadomości rady wyraźnie zastrzeżono, że nie uważa ona aby dokumentacja PEP lub jakakolwiek zewnętrzna dokumentacja była wystarczająca.

Zmiany dalej możliwe

Decyzja oznacza odrzucenie PEP 640 i 642. Oba wzorce otrzymały w ocenie rady niewielkie wsparcie ze strony swoich głównych programistów. Proponowana składnia PEP 642 nie wydawała się też właściwym sposobem na rozwiązanie problemu „postrzępionych krawędzi” (jagged edges) w składni PEP 634.

Natomiast decyzja nie skutkuje jakimś zamrożeniem implementacji PEP 634. Wręcz przeciwnie, zaproszono wszystkich do tego aby przekazywać zmiany w PEP 634 (nawet PEP 640 i 642, jeśli mają zacząć zyskiwać poparcie). Można to robić za pomocą zwykłych kanałów komunikacji, tj. głównie w formie dyskusji w python-dev lub na serwerze discuss.python.org. Następnie będzie miało miejsce formalne przedłożenie propozycji Radzie Sterującej do rozważenia. Ale uwaga: zostanie wzięte pod uwagę to aby zmiany niekompatybilne wstecznie były dokonywane tylko przed zamrożeniem funkcji w Pythonie 3.10.

Sprawdź oferty pracy na TeamQuest

Skutki

Wprowadzone zmiany oznaczają rewolucję. Doprowadzi to bowiem do wprowadzenia instrukcji match w przyszłej wersji Pythona, którą można uznać za znacznie bardziej zaawansowaną wersję instrukcji switch, dostępnej w niemal wszystkichtradycyjnych językach programowania. Podczas procesu dopasowywania wzorców wartość wejściowego łańcucha zostanie dopasowana do określonych wzorców. Przykład zamieszczamy poniżej:

match json_shape:
case {„type”: „square”, „sides”: sides, „color”: color}:
return Square(sides, color)
case {„type”: „triangle”, „sides”: sides}:
return Triangle(sides)
case _:
raise ValueError(„Not a supported shape”)

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej