Sobes.tech
Junior

Jaki typ typizacji jest w Pythonie: statyczny czy dynamiczny?

sobes.tech AI

Odpowiedź od AI

Dynamiczny, ale z elementami statycznymi dzięki adnotacjom typów.

W dynamicznym typowaniu typ zmiennej jest określany podczas wykonywania programu na podstawie przypisanej mu wartości.

# Dynamiczne typowanie: x może przyjmować różne typy danych
x = 10  # int
x = "cześć" # str

Od wersji Python 3.5 dodano adnotacje typów (type hints), które pozwalają wskazać oczekiwany typ zmiennej, argumentu funkcji lub wartości zwracanej. Nie czyni to Pythona językiem statycznie typowanym w klasycznym rozumieniu, ale umożliwia korzystanie z analizatorów statycznych kodu (np. mypy) do sprawdzania typów przed uruchomieniem programu.

# Adnotacje typów
def greet(name: str) -> str:
    return f"Cześć, {name}"

wiek: int = 30

Główne różnice między typowaniem dynamicznym a statycznym:

Charakterystyka Typowanie dynamiczne Typowanie statyczne
Definicja typów Podczas wykonywania programu Podczas kompilacji
Weryfikacja błędów typów Podczas wykonywania programu Podczas kompilacji
Elastyczność Wyższa Niższa
Wydajność Może być niższa (z powodu sprawdzania podczas wykonywania) Zazwyczaj wyższa (typy znane z wyprzedzeniem)

Pomimo adnotacji, Python pozostaje językiem o typowaniu dynamicznym, ponieważ sprawdzanie typów podczas wykonywania nadal się odbywa, i można przypisać zmiennej wartość innego typu, nawet jeśli była adnotacja składniowa. Adnotacje służą do poprawy czytelności kodu, ułatwienia debugowania i korzystania z narzędzi analizy statycznej.