- 1 1. Mis on Pythoni docstring?
- 2 2. docstring’i põhiline kirjutamisviis
- 3 3. docstring’i stiilid (Google stiil, NumPy stiil, reStructuredText stiil)
- 4 4. PEP 257 ja parimad tavad
- 5 5. docstring’i kasutamine testides (doctest)
- 6 6. Praktiline näide: docstringi kasutamine koodi dokumenteerimisel
- 7 7. Levinud vead ja kuidas neid vältida
- 8 8. Kokkuvõte: tõhus dokumentatsiooni loomine docstringitega
1. Mis on Pythoni docstring
?
Pythonis on docstring
eriline string, mida kasutatakse funktsioonide, klasside ja moodulite dokumenteerimiseks. docstring
parandab koodi hooldatavust ja aitab teistel arendajatel seda kiiremini mõista. Lisaks saab automaatseid dokumentatsioonitööriistu (nt Sphinx) kasutades docstring
ist genereerida põhjalikku dokumentatsiooni.
docstring’i asukoht ja vorming
docstring
paigutatakse kohe funktsiooni, klassi või mooduli definitsiooni järele ning see ümbritsetakse kolmikute topeltjutumärkidega. Üldine süntaks on järgmine:
def funktsiooni_nimi(argumendid):
"""
Siia kirjutatakse lühikirjeldus funktsiooni eesmärgist.
Argumendid:
arg_nimi (tüüp): detailsem kirjeldus argumendist
Tagastus:
tüüp: tagastatava väärtuse kirjeldus
"""
pass
docstring
i kasutatakse nii Pythoni sisseehitatud funktsioonis help()
kui ka koodiredaktorites, kus see pakub lisaselgitusi. Seetõttu on selle roll dokumentatsioonina väga oluline.
2. docstring’i põhiline kirjutamisviis
Pythonis kasutatakse docstring
it selleks, et lühidalt ja selgelt kirjeldada funktsiooni või klassi käitumist. Tüüpiliselt algab see funktsiooni eesmärgi lühikirjeldusega, millele järgneb info argumentide, tagastusväärtuste ja võimalike vigade kohta. Kui järgida Pythoni ametlikku stiilijuhendit PEP 257, säilib ühtlane stiil ja kood muutub teistele arendajatele arusaadavamaks.
docstring’i põhiline struktuur
Üherealine docstring
sobib siis, kui funktsiooni saab kirjeldada väga lühidalt. Näiteks:
def add(a, b):
"""Kahe arvu summa tagastamine."""
return a + b
Mitmerealist docstring
it kasutatakse detailsemaks seletuseks. Seal kirjeldatakse funktsiooni tööd, argumente ja tagastusväärtusi, kasutades reavahetusi loetavuse suurendamiseks:
def add(a, b):
"""
Liidab kaks arvu ja tagastab tulemuse.
Argumendid:
a (int): esimene liidetav arv
b (int): teine liidetav arv
Tagastus:
int: kahe arvu summa
"""
return a + b

3. docstring’i stiilid (Google stiil, NumPy stiil, reStructuredText stiil)
docstring
itel on erinevad stiilid sõltuvalt projektist või tööriistadest, mida kasutatakse. Kõige laialdasemalt levinud on Google stiil, NumPy stiil ja reStructuredText stiil.
Google stiil
Google stiil on tuntud oma lihtsuse ja visuaalse selguse poolest. Argumendid ja tagastusväärtused kirjeldatakse jaotiste Args
ja Returns
all, mis muudab funktsiooni eesmärgi kiirelt arusaadavaks.
def add(a, b):
"""
Liidab kaks arvu ja tagastab tulemuse.
Args:
a (int): esimene liidetav arv
b (int): teine liidetav arv
Returns:
int: kahe arvu summa
"""
return a + b
NumPy stiil
NumPy stiil pakub detailsemaid seletusi ning seda kasutatakse laialdaselt teadusliku arvutuse ja andmeanalüüsi teekide dokumentatsioonis. Kasutatakse jaotisi nagu Parameters
ja Returns
.
def add(a, b):
"""
Liidab kaks arvu ja tagastab tulemuse.
Parameters
----------
a : int
esimene liidetav arv
b : int
teine liidetav arv
Returns
-------
int
kahe arvu summa
"""
return a + b
reStructuredText stiil
reStructuredText stiili kasutatakse koos Sphinxiga, mis on populaarne dokumentatsiooni genereerimise tööriist. Selle abil saab koodist automaatselt luua HTML- või PDF-dokumente.
def add(a, b):
"""
Liidab kaks arvu.
:param a: esimene liidetav arv
:type a: int
:param b: teine liidetav arv
:type b: int
:return: kahe arvu summa
:rtype: int
"""
return a + b

4. PEP 257 ja parimad tavad
Pythoni ametlik stiilijuhend PEP 257 kirjeldab selgelt, kuidas docstring
eid kirjutada. Selle järgimine parandab koodi loetavust ja muudab selle lihtsamini mõistetavaks nii teistele arendajatele kui ka autorile endale.
Olulised punktid PEP 257-st
- Üherealine docstring
Lihtsate funktsioonide puhul soovitatakse kasutada lühikest ühe realist kirjeldust. - Mitmerealine docstring
Kui vaja on detailsemat seletust, kasutatakse mitmerealistdocstring
it. Esimene rida jääb kokkuvõtteks, millele järgneb tühi rida ja siis detailsem kirjeldus. - Taanded ja tühjad read
docstring
is suurendatakse loetavust taanete ja reavahetuste abil. Argumendid ja tagastusväärtused tuleb selgelt eristada.
Parimad tavad
- Lühike ja selge kirjeldus
docstring
peaks olema kompaktne, kuid samal ajal täpne, et selgitada funktsiooni või klassi eesmärki. Ebaoluline info tuleks välja jätta ja olulised punktid esile tuua. - Ühtne stiil
Projekti sees tuleks kasutada sama stiili (Google, NumPy või muu), et dokumentatsioon oleks ühtlane ja loetav.
5. docstring’i kasutamine testides (doctest)
Pythonis on moodul doctest
, mis võimaldab docstring
is olevat näidiskoodi automaatselt testida. See suurendab koodi töökindlust ja dokumentatsiooni usaldusväärsust.
doctest’i põhiline kasutamine
doctest
otsib docstring
idest näidiskoodi ning kontrollib, kas need tagastavad oodatud tulemuse. Näiteks:
def add(a, b):
"""
Liidab kaks arvu ja tagastab tulemuse.
Args:
a (int): esimene arv
b (int): teine arv
Returns:
int: kahe arvu summa
Näide:
>>> add(2, 3)
5
>>> add(0, 0)
0
"""
return a + b
if __name__ == "__main__":
import doctest
doctest.testmod()
Ülaltoodud näites käivitab doctest
funktsiooni ja võrdleb tulemust docstring
is oleva väljundiga.
doctest’i eelised
- Koodi ja dokumentatsiooni vastavus
doctest
tagab, et dokumentatsioonis olevad näited töötavad päriselt, hoides dokumentatsiooni kooskõlas koodiga. - Automaatne testimine
Kõikdocstring
is olevad näited testitakse automaatselt, mis vähendab käsitsi testimise vajadust ja võimalikke vigu.

6. Praktiline näide: docstring
i kasutamine koodi dokumenteerimisel
Kui docstring
it kasutatakse järjepidevalt, muutub Pythoni kood palju loetavamaks ja lihtsamini mõistetavaks teiste arendajate jaoks. Allpool on toodud näide klassi ja meetodite dokumenteerimisest.
Näide klassi docstring’ist
class Calculator:
"""
Lihtne kalkulaatori klass.
See klass võimaldab teha põhitehteid: liitmine, lahutamine, korrutamine ja jagamine.
Attributes:
result (int): muutuja arvutustulemuse hoidmiseks
"""
def __init__(self):
"""
Calculator klassi konstruktor.
Algväärtustab tulemuse nulliga.
"""
self.result = 0
def add(self, a, b):
"""
Liidab kaks arvu ja tagastab tulemuse.
Args:
a (int): esimene arv
b (int): teine arv
Returns:
int: kahe arvu summa
"""
self.result = a + b
return self.result
Selles näites on nii klassil kui ka igal meetodil oma docstring
, mis annab kasutajale kiire ülevaate funktsionaalsusest.
Dokumentatsiooni genereerimine Sphinxiga
Sphinx võimaldab docstring
ite põhjal automaatselt luua HTML- või PDF-dokumente. Selleks tuleb projektis seadistada conf.py
fail ja käivitada käsk make html
, mis genereerib dokumentatsiooni otse koodist.
Sphinx paigaldatakse käsuga:
pip install sphinx
Seejärel algatatakse projekt:
sphinx-quickstart
Pärast seadistamist luuakse dokumentatsioon automaatselt olemasolevate docstring
ite põhjal.

7. Levinud vead ja kuidas neid vältida
Algajad teevad docstring
eid kirjutades sageli teatud vigu. Allpool on mõned tüüpilised probleemid ja nende lahendused.
1. Liiga ebamäärane kirjeldus
docstring
peab olema konkreetne. Näiteks järgmine kirjeldus on puudulik:
def add(a, b):
"""Liidab kaks arvu."""
return a + b
Puudub info argumentide ja tagastusväärtuse kohta. Parandatud versioon:
def add(a, b):
"""
Liidab kaks täisarvu ja tagastab summa.
Args:
a (int): esimene arv
b (int): teine arv
Returns:
int: kahe arvu summa
"""
return a + b
2. Argumendi või tagastusväärtuse ebatäpne kirjeldus
Kui argumentide ja tagastusväärtuste tüübid või tähendus pole selged, võib funktsiooni kasutamine muutuda keeruliseks. Näiteks:
def divide(a, b):
"""Jagab kaks arvu."""
return a / b
See jätab lahtiseks, mis juhtub nulliga jagamisel. Parandatud versioon:
def divide(a, b):
"""
Jagab kaks arvu ja tagastab tulemuse. Nulliga jagamisel tõstab ZeroDivisionError.
Args:
a (float): jagatav
b (float): jagaja
Returns:
float: jagamise tulemus
Raises:
ZeroDivisionError: kui b = 0
"""
if b == 0:
raise ZeroDivisionError("Nulliga ei saa jagada")
return a / b

8. Kokkuvõte: tõhus dokumentatsiooni loomine docstring
itega
Selles artiklis käsitlesime Pythoni docstring
ite olulisust, nende kirjutamisviise, stiile ja parimaid tavasid. docstring
id parandavad koodi loetavust ja hooldatavust ning PEP 257 juhiste järgimine tagab ühtse ja professionaalse dokumentatsiooni.
Lisaks vaatasime, kuidas kasutada doctest
it testimiseks ja Sphinxi dokumentatsiooni automaatseks genereerimiseks. Nende tööriistade abil saab tagada, et dokumentatsioon on alati kooskõlas koodiga ning vähendada vigade tekkimise võimalust.
Ühtne dokumentatsioon vastavalt PEP 257-le
PEP 257 annab ametlikud juhised docstring
ite kirjutamiseks. Selle järgimine võimaldab luua lihtsasti loetavat ja järjepidevat dokumentatsiooni. Lihtsate funktsioonide puhul sobib ühe realine docstring
, detailsemate funktsioonide jaoks aga mitmerealine kirjeldus.
doctest’i kasutamine näidiskoodi testimiseks
doctest
võimaldab automaatselt testida docstring
ites olevat näidiskoodi, tagades dokumentatsiooni ja koodi kooskõla. See aitab ennetada vigu ja parandab töökindlust.
Automaatne dokumentatsiooni loomine Sphinxiga
Sphinx võimaldab docstring
ite põhjal genereerida HTML- või PDF-vormingus dokumente. See vähendab käsitsi dokumentatsiooni koostamise vajadust ja tagab, et dokumentatsioon püsib alati ajakohane.
—
Lõppsõna: docstring
id ei ole lihtsalt kommentaarid koodis, vaid need on väärtuslik tööriist, mis aitab arendajatel luua professionaalse, usaldusväärse ja hooldatava tarkvara.