Miért hasznos az annotációk alkalmazása?

A kódsorok fölé vagy mellé írt kommenteken, valamint a dokumentációs karakterláncon (docstring) felül a forráskód értelmezését a Pythonban annotációkkal (annotation) is segíthetjük, amelyek lényegben a kód bizonyos helyein alkalmazható tájékoztató címkék.

Annotációval láthatjuk el a függvények argumentumait és a visszatérési értékét, valamint a változókat és az objektumok attribútumait. Ezen kódhelyeken annotációval legtöbbször típusneveket adunk meg. Ez azért hasznos, mert a Python dinamikus típuskezelésű programnyelv, ami azt jelenti, hogy a változók típusukat csak az értékadás után, az értékük típusával megegyezően veszik fel, ezért egy függvény definíciójában a fejlécből még nem tudjuk meg, hogy milyen típusú argumentumokat várnak a felsorolt paraméterek, és arra sem utal semmi, hogy a visszatérési érték milyen típusú. A típusnevet jelölő annotációt típusutalásnak (type hint) nevezik.

A típusutalásokkal nem csak könnyebben értelmezhető kódot kapunk, hanem arra is lehetőség nyílik, hogy a fejlettebb forráskódszerkesztők, fejlesztőkörnyezetek és speciális alkalmazások (statikus típusellenőrzők) bizonyos vizsgálatokat végezzenek, és ennek alapján olyan szolgáltatásokat nyújtsanak, amelyek megkönnyítik, és szemantikailag biztonságosabbá teszik a forráskód megírását (pl. típuskonzisztencia vizsgálata, automatikus kódkiegészítés, és javaslat a típushoz alkalmazható utasításokra).

Bár az annotációk alkalmazásának zöme típusutalás, de valójában az annotáció bármilyen érvényes kifejezés lehet. Nem annyira köztudott, hogy a függvény fejlécében szereplő annotációkban foglal adatokat futás közben a programunk is fel tudja dolgozni. Ehhez a függvény __annotations__ speciális attribútumával hivatkozott szótárt kell használni, ahol a kulcsok a paraméternevek, az ezekhez tartozó objektumok pedig az annotációkban szereplő kifejezések értéke.

Ennek szemléltetésére az alábbi függvényt definiáltuk. Itt a kommenteken és a docstringen felül láthatjuk a paraméterek és visszatérési érték annotációit. A függvény második paraméréhez nem egy egyszerű típusutalást írtunk, hanem egy szótárt eredményező kifejezést, amelyben meghatároztuk az argumentumként felvehető legkisebb és legnagyobb értéket. A függvény törzsén belül ezt felhasználva végzünk ellenőrzést.

Az annotációkról és azok feldolgozásáról további részleteket és példákat a Python tudásépítés lépésről lépésre című könyv „No comment! Vagy mégis? – a forráskódértelmezhetőségét növelő kiegészítő információk” és a „Speciális metódus és adat attribútumok” fejezetek tartalmaznak.

Érdekel a Python tudásépítés lépésről lépésre az alapoktól az első asztali alkalmazásig című e-könyv.