Poprawne definiowanie funkcji

0

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ż?

1

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.

1

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ć.

1

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.

1

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1