Funkcje definiować tak:
def fun(a: int, b:int) -> int:
return a+b
czy
def fun(a, b):
return a+b
Czym to się różni oprócz zapisem, to tylko informacje dla programisty czy dla interpretera też?
Funkcje definiować tak:
def fun(a: int, b:int) -> int:
return a+b
czy
def fun(a, b):
return a+b
Czym to się różni oprócz zapisem, to tylko informacje dla programisty czy dla interpretera też?
Type hinty są pewnym rodzaj dokumentacji, więc jak najbardziej pomagają innym programistom.
Środowiska programistyczne potrafią brać je pod uwagę i dają lepsze podpowiedzi do ohintowanego kodu.
Dodatkowo masz narzędzia w stylu mypy, które pomagają wykrywać potencjalne błędy.
Dla interpretera też, bo może ci powiedzieć ze próbujesz wywołać funkcje z argumentem string zamiast int. Dodatkowo IDE będzie w stanie lepiej ci podpowiadać składnie, bo będzie wiedzieć jakie masz tam typy.
Pisz tak jak w 1, sam będziesz sobie potem dziękować.
Type hinty to ciągle nowość w pythonowym świecie, i nie tyczą się prostych typów. Oba przykłady są w pełni poprawne i zgodne z konwencją na dzisiejszy dzień. Jednak coraz cześciej zaczyna się widywać opcję nr 2. Więc dobrze praktykować hinting. Niektóre nowe frameworki jak FastAPI zdecydowały się na wymuszanie type hintingu u siebie i tam nie jest to już tylko opcjonalny dodatek.
Zdania są podzielone. Osobiście jakbym miał wszędzie pisać typy to bym pisał projekt w Go/Rust/CPP. Ale wyraźnie społeczność Pythona idzie w tą stronę, co średnio mnie cieszy.