Python 3/assert ja debug-lohko
assert
[muokkaa | muokkaa wikitekstiä]Lauseella assert voi testata, että ohjelman sisäinen logiikka on sellaista kuin sen oletetaan olevan. Assert-lausetta ei pidä käyttää muiden virheiden, kuten väärien käyttäjän antamien syötteiden käsittelyssä. Assert-lauseelle annetaan ehto, jonka oletetaan olevan tosi. Jos ehto ei ole tosi, keskeytyy ohjelman suoritus AssertError-virheeseen. Lauseelle voi antaa myös valinnaisen tekstin, joka tulostetaan virheen kanssa.
Assert-lause on muotoa
assert ehto, [virheilmoitus]
Esimerkiksi voimme varmistaa, että funktiolle annettavat parametrit ovat sellaisia, kuin oletamme.
def tee_jakolasku(jaettava, jakaja):
assert jakaja != 0, "Jakaja on nolla"
return jaettava / jakaja
def aikaväli(alku, loppu):
assert loppu >= alku, "Loppu on ennen alkua"
return loppu - alku
__debug__
[muokkaa | muokkaa wikitekstiä]Debug-muuttujaa voi käyttää ehtolauseissa, kun halutaan suorittaa koodia, joka suoritetaan vain kehitysvaiheessa, ei valmiissa ohjelmassa. __Debug__ -muuttujan arvo on tosi, kun ohjelma suoritetaan kehitysmoodissa ja epätosi, kun se suoritetaan tuotantomoodissa. Toisin sanoen, kun sitä käyttää if-lauseen ehtona, suoritetaan if-lohkon sisällä oleva koodi vain, kun ohjelma ajetaan kehitysmoodissa.
Ohjelma ajetaan kehitysmoodissa, kun se käynnistetään ilman tulkille annettavia opitimointiparametria -O (tai -OO) (ks. Python-tulkki » -O ja -OO). Kun tulkille annetaan jompi kumpi optimointiparametri, poistetaan ohjelmasta kaikki ehdot, joissa käytetään __debug__ -muuttujaa, sekä assert-lauseet.
if __debug__:
print(f"Muuttuja on nyt {muuttuja}")
Johdanto: | |
---|---|
Tietotyypit ja tietorakenteet: |
Luvut - Merkkijonot - Lista - Monikko (tuple) - Sanakirja - Joukko (set) |
Ohjausrakenteet | |
Muut kielen rakenteet: |
Moduuli - Luokka - Funktio - Virheidenhallinta - Tiedosto |
Graafinen käyttöliittymä: | |
Harjoitustehtäviä: | |
Lisätiedot ja lähteet: |