Hint van het Python-type met uitzonderingen

Ik heb een functie die er als volgt uitziet:

def check_for_errors(result):
    if 'success' in result:
        return True
    if 'error' in result:
        raise TypeError
    return False

Als deze functie met succes wordt uitgevoerd, zou ik een boolmoeten krijgen, maar als er een fout is, zou ik een TypeErrormoeten krijgen – wat goed is omdat ik ermee omga in een andere functie.

Mijn functie eerste regel ziet er als volgt uit:

def check_for_errors(result: str) -> bool:

Mijn vraag is: moet ik de fout in mijn typehint vermelden?


Antwoord 1, autoriteit 100%

Typehints kunnen niets zeggen over uitzonderingen. Ze vallen volledig buiten het bereik van de functie. U kunt de uitzondering echter nog steeds documenteren in de docstring.

Van PEP 484 — Typ Hints:

Uitzonderingen

Er wordt geen syntaxis voorgesteld voor het vermelden van expliciet genoemde uitzonderingen. Momenteel is de enige bekende use case voor deze functie documentatie, in welk geval de aanbeveling is om deze informatie in een docstring te zetten.

Guido van Rossum heeft zich sterk gekant tegen het toevoegen van uitzonderingenaan de typehints spec, omdat hij niet in een situatie wil belanden waarin uitzonderingen op elk niveau gecontroleerd(verwerkt in aanroepcode) of expliciet moeten worden aangegeven.


Antwoord 2, autoriteit 10%

Het is meestal een goed idee om de fout te documenteren. Dit betekent dat een andere ontwikkelaar die uw functie gebruikt uw fouten kan afhandelen zonder uw code te hoeven lezen.

Other episodes