Blog IT, Blog Marketing

Co przyniesie Python 3.9

Co przyniesie Python 3.9

Marcin Sarna , 01.09.2020 r.

Przygotowania trwają

Przed wydaniem oficjalnej wersji programiści planowali wypuścić sześć wersji alfa, pięć wersji beta (preview) i dwie wersje release candidate. Wydany został już pierwszy RC (publikacja 11 sierpnia a druga wersja RC powinna się pojawić w okolicach 14 września.

Podstawowe zmiany w skrócie

Wprowadzonych zostanie kilka znaczących zmian, które zdecydowanie wpłyną na sposób działania programów w Pythonie. Otrzymamy nowy parser oparty na Parsing Expression Grammar (PEG), dodane zostaną nowe Union Operators: merge | i update |=, Python wzbogaci się też o moduł graphlib. Zmian jest na tyle dużo, że na pewno będziemy jeszcze o nich pisać – na razie skoncentrujmy się na kilku z nich.

Nowy parser

W przeciwieństwie do starszego parsera LL, zaktualizowana wersja oferuje kilka kluczowych różnic, które czynią ją bardziej elastyczną i przyszłościową. Zasadniczo w LL programiści Pythona wykorzystali kilka hacków, aby uniknąć jego ograniczeń. To z kolei wpływało na elastyczność dodawania nowych funkcji.

Główną różnicą między PEG a parserami opartymi na gramatyce bezkontekstowej (takim jest właśnie LL) jest to, że w PEG operator wyboru jest uporządkowany. O co chodzi?

Załóżmy, że napiszemy regułę: A | B | C. Obecnie parser LL wygeneruje konstrukcje, aby stwierdzić, który składnik alternatywy (A, B lub C) musi zostać rozwinięty. PEG tymczasem spróbuje sprawdzić, czy pierwsza alternatywa (np. A) się powiedzie, czy nie. Przejdzie do następnej alternatywy tylko wtedy, gdy A się nie powiedzie. Krótko mówiąc, PEG sprawdzi alternatywy w kolejności, w jakiej zostały zapisane.

Strefy czasowe

Python 3.2 wprowadził klasę datetime.timezone. Zasadniczo jego głównym celem było zapewnienie wsparcia dla stref czasowych UTC. W rzeczywistości jednak lokalna strefa czasowa jest nadal niedostępna.

W Pythonie 3.9 zostanie dodana obsługa bazy danych stref czasowych IANA. W większości przypadków ta baza danych jest również nazywana „tz” lub bazą danych Olson. Nie można więc się pomylić z tymi terminami. Wszystkie funkcje stref czasowych IANA są zawarte w module zoneinfo. Ta baza danych jest bardzo popularna i szeroko rozpowszechniona w systemach operacyjnych typu Unix. Trzeba jednak nadal pamiętać, że system Windows używa zupełnie innej metody obsługi stref czasowych.

Nowe operatory

Dodane zostaną nowe operatory do operacji na zbiorach. W poprzednich wersjach Pythona scalanie lub aktualizowanie dwóch słowników nie było zbyt wydajne. Dlatego deweloperzy tego języka wprowadzają operatorów takich jak | do łączenia i | = do aktualizacji słowników.

Na przykład gdy obecnie używamy d1.update(d2) to modyfikuje to również d1. Aby to naprawić, musimy zaimplementować mały „hack”, taki jak e=d1.copy (); e.update(d2). Tworzymy więc nową zmienną tymczasową do przechowywania wartości. Ale to rozwiązanie nie jest zbyt wydajne. To główny powód dodania nowych operatorów.

Wprowadzenie removeprefix () i removesuffix ()

Czy kiedykolwiek odczuwałeś potrzebę łatwego usunięcie przedrostku lub sufiksu z danego ciągu? Teraz masz do dyspozycji str.lstrip([chars])str.rstrip([chars]), które mogą to zrobić. Ale tutaj zaczyna się też pewne zamieszanie. W rzeczywistości te funkcje działają z zestawem znaków zamiast z podłańcuchem. Dlatego zdecydowanie potrzebne są oddzielne funkcje, które mogą usuwać podciąg z początku lub końca łańcucha. Innym powodem zapewniania wbudowanej obsługi removeprefix()removesuffix() jest fakt, że twórcy aplikacji zwykle piszą tę funkcję samodzielnie. Ale w większości przypadków popełniają błędy podczas obsługi pustych ciągów. Dlatego wbudowane rozwiązanie może być pomocne.

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