Wskazówki dotyczące typów Pythona: pisanie statyczne i adnotacje

Dowiedz się, jak pisać wskazówki dotyczące typów w Pythonie. Popraw jakość kodu, włącz autouzupełnianie i wykorzystaj mypy do statycznej analizy kodu.

Spróbuj w Edytorze

Przegląd

Python jest historycznie językiem dynamicznie typowanym, co oznacza, że interpreter wnioskuje o typach zmiennych w czasie wykonywania, zapewniając programistom szybkość i elastyczność. Jednak w miarę rozrastania się baz kodu ta elastyczność wpisywania dynamicznie może prowadzić do mylących błędów w czasie wykonywania — takich jak przekazywanie listy do funkcji oczekującej ciągu znaków. Aby wypełnić tę lukę, wPython 3.5 wprowadzono wskazówki dotyczące typów (adnotacje typów), umożliwiające programistom jawne dokumentowanie oczekiwanych typów w kodzie.

Wskazówki dotyczące typów nie wpływają na sposób, w jaki Python uruchamia kod; interpreter całkowicie je ignoruje w czasie wykonywania. Zamiast tego ich wartość polega na analizie statycznej i narzędziach IDE. Dodając adnotacje typów do zmiennych, parametrów funkcji i typów zwracanych, Twoje IDE może zapewnić precyzyjne autouzupełnianie i natychmiastowo oznaczać błędy niezgodności typów. Narzędzia takie jak `mypy` mogą przeskanować bazę kodu przed wdrożeniem, aby wyłapać błędy statycznie, naśladując kontrolę języków takich jak TypeScript lub Java w czasie kompilacji.

Możliwości pisania w Pythonie są szerokie. Możesz dodawać adnotacje do podstawowych typów, takich jak `str`, `int` i `bool`, lub używać typów zaawansowanych z wbudowanego modułu `typing` (lub standardowych kolekcji wPython 3.9+), takich jak `list[str]`, `dict[str, int]` i `tuple[float, float]`. Funkcje takie jak `Union` (lub operator potoku `|` wPython 3.10+) pozwalają parametrom akceptować wiele typów, podczas gdy `Optional[T]` reprezentuje wartość, która może być określonego typu lub `Brak`. Implementacja wskazówek dotyczących typów radykalnie poprawia czytelność i współpracę w zespole.

Dane wyjściowe kodu i wykonania

Napisanie funkcji z adnotacjami typu i sprawdzenie, jak akceptuje ona dane wejściowe.

typing_demo.py
Spróbuj w Edytorze
# Type annotations for function parameters and return values
def greeting(name: str, count: int) -> str:
    return f"Hello {name}! " * count

# Type hints on standard collections (Python 3.9+)
user_roles: dict[str, str] = {
    "admin": "Alice",
    "moderator": "Bob"
}

message = greeting("Jane", 2)
print(message)
print(f"Roles configured: {user_roles}")
Wyjście terminala
Hello Jane! Hello Jane! 
Roles configured: {'admin': 'Alice', 'moderator': 'Bob'}

Wdrażanie krok po kroku

  • Zapobieganie błędom integracyjnym w bazach kodów dużych zespołów
  • Umożliwianie uzupełniania kodu IDE w złożonych projektach kodu
  • Generowanie samodokumentujących się struktur API i schematów walidacyjnych

Często zadawane pytania

Czy wskazówki dotyczące typów wymuszają bezpieczeństwo typów w czasie wykonywania?

Nie. Python nie zgłasza wyjątków błędów, jeśli przekażesz typ inny niż wskazówka z adnotacjami. Aby wymusić sprawdzanie typu, musisz uruchomić statyczne moduły sprawdzające, takie jak mypy.

Jaka jest różnica między Anyi Union?

Any wyłącza sprawdzanie typu zmiennej, umożliwiając jej przechowywanie czegokolwiek. Union (lub T | U) ogranicza zmienną do określonego, zdefiniowanego podzbioru typów.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.