Nowości w Python 3.11

Co prawda Python 3.11 wyszedł w październiku zeszłego roku to dopiero niedawno miałem czas przyjrzeć się nowościom i zmianom w tej wersji języka. Nie ma ich co prawda bardzo dużo, ale niektóre wydają się dość ciekawe i do zastosowania nie tylko przez zaawansowanych programistów. Sam jako domyślny język używam od wielu miesięcy wersji 3.10, którą uważam za stabilną. Spójrzmy zatem co przynosi wersja 3.11.

Dwie nowe metody operowania na ciągach znaków

W Python 3.11 dodano nowe metody łańcuchowe: str.removeprefix() i str.removesuffix(), które umożliwiają łatwe usunięcie określonego prefiksu lub sufiksu z ciągu znaków. Tego typu operacje zazwyczaj musieliśmy zaprogramować samodzielnie lub korzystać z zewnętrznych bibliotek do operacji na łańcuchach znaków. Używanie ich jest bardzo proste:

string = "bardzo-lubie-programowac"
prefix = "bardzo-"
new_string = string.removeprefix(prefix)
print(new_string)
# Output: "lubie-programowac"


string = "bardzo-lubie-programowac"
suffix = "-programowac:
new_string = string.removesuffix(suffix)
print(new_string)
# Output: "bardzo-lubie"

W pierwszym przykładzie metoda removeprefix() służy do usunięcia przedrostka „bardzo-” z łańcucha „bardzo-lubie-programowac”. Wynikowy ciąg znaków new_string to „lubie-programowac”.

string = "bardzo-lubie-programowac"
prefix = "bardzo-"
new_string = string.removeprefix(prefix)
print(new_string)
# Output: "lubie-programowac"

W drugim przykładzie metoda removesuffix() służy do usunięcia sufiksu „-programowac” z łańcucha „bardzo-lubie-programowac”. Wynikowy ciąg znaków new_string to „bardzo-lubie”.

Jeśli określony prefiks lub sufiks nie istnieje w ciągu, te metody zwrócą oryginalny ciąg bez zmian.

Previous slide
Next slide

Adnotacje typów dla zmiennych w Python 3.11

Adnotacje typu dla zmiennych w umożliwiają deklarowanie typów zmiennych w kodzie, ułatwiając zrozumienie oczekiwanych typów danych wejściowych i wyjściowych. W Python 3.11 są obsługiwane w standardowej składni definicji funkcji, co ułatwia deklarowanie typów zmiennych w kodzie. Popatrzmy jak to wygląda na przykładzie prostej metody dodawania dwóch zmiennych:

# Example: Declaring the type of a variable
x: int = 10
print(x)
# Output: 10

# Example: Declaring the types of function arguments and return values
def add(a: int, b: int) -> int:
    return a + b

result = add(5, 6)
print(result)
# Output: 11

W pokazanym przykładzie metoda add jest zdefiniowana z adnotacjami typu dla argumentów funkcji a i b oraz wartości zwracanej. Argumenty funkcji są opatrzone adnotacją typu int, a zwracana wartość opatrzona jest adnotacją -> int. Oznacza to, że metoda ta przyjmuje dwa argumenty typu int i zwraca wynik typu int.

Adnotacje typu są opcjonalne w Pythonie, ale mogą być przydatne do dokumentowania oczekiwanych typów zmiennych i do wychwytywania błędów typu w czasie wykonywania. Mogą być również używane przez narzędzia, takie jak linters i edytory kodu, w celu zapewnienia ulepszonego sprawdzania błędów i sugestii dotyczących uzupełniania kodu.

Ulepszone komunikaty błędów

W Pythonie 3.11 wprowadzono ulepszone komunikaty o błędach, aby w niektórych przypadkach wyświetlać bardziej pomocne i szczegółowe komunikaty o błędach.

def func(a, b):
    pass

try:
    func()
except TypeError as e:
    print(e)
# Output: "func() missing 2 required positional arguments: 'a' and 'b'"
W pierwszym przykładzie metoda func jest zdefiniowana z dwoma wymaganymi argumentami a i b. Kiedy funkcja jest wywoływana bez żadnych argumentów, zgłaszany jest TypeError z bardziej szczegółowym komunikatem o błędzie wskazującym, że w wywołaniu funkcji brakuje wymaganych argumentów.
try:
    'hello'.nonexistent_attribute
except AttributeError as e:
    print(e)
# Output: "'str' object has no attribute 'nonexistent_attribute'"

W drugim przykładzie AttributeError jest zgłaszany podczas próby uzyskania dostępu do nieistniejącego atrybutu nonexistent_attribute obiektu łańcuchowego. Ulepszony komunikat o błędzie zawiera bardziej szczegółowe informacje o typie obiektu, który nie ma określonego atrybutu.

Te ulepszone komunikaty o błędach ułatwiają zrozumienie, co poszło nie tak i jak naprawić problem oszczędzając przy tym nasz czas.

E-BOOK

Zaczynasz swój pierwszy projekt związany z automatyzacją?

Ten e-book jest dla Ciebie! Zawiera sprawdzone podejście, które realizowałem w wielu projektach. Sprawdź co możesz zrobić, by odnieść sukces!


Subscribe
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments

ZdradziĆ Ci sekretY udanego projektu automatyzacji?

(link otwiera się w nowym oknie)