Wikikirjasto fiwikibooks https://fi.wikibooks.org/wiki/Wikikirjasto:Etusivu MediaWiki 1.39.0-wmf.25 first-letter Media Toiminnot Keskustelu Käyttäjä Keskustelu käyttäjästä Wikikirjasto Keskustelu Wikikirjastosta Tiedosto Keskustelu tiedostosta Järjestelmäviesti Keskustelu järjestelmäviestistä Malline Keskustelu mallineesta Ohje Keskustelu ohjeesta Luokka Keskustelu luokasta TimedText TimedText talk Moduuli Keskustelu moduulista Pienoisohjelma Keskustelu pienoisohjelmasta Pienoisohjelman määritys Keskustelu pienoisohjelman määrityksestä Python 3 0 12211 140353 140319 2022-08-22T13:09:23Z Hunsvotti 6338 /* Sisällys */ + pakkaus; luokan ja moduulin järjestyksen vaihto wikitext text/x-wiki {{Edellinen-seuraava|Aiheesta muualla|Yleistä}} {{Haku kirjasta}} Python on monipuolinen tulkattava ohjelmointikieli, joka on alun perin kehitetty yhdistämään skriptikielten ja tavanomaisten ohjelmointikielten hyvät puolet. Pythonia pidetään helppona oppia sen yksinkertaisen syntaksin ja korkean tason tietorakenteiden takia. Monet suosittelevat sitä ensimmäiseksi ohjelmointikieleksi. Pythonia on usein verrattu sellaisiin kieliin kuin Perl, Java, Ruby, Tcl ja Scheme. Tämä kirja käsittelee Python-ohjelmointikielen versiota 3. Koska 3. versio ei ole täysin yhteensopiva 2. version kanssa on siitä oma kirjansa [[Python 2]]. ==Kirjoitussuunitelma== #Kopioidaan sisältö Python 2 -kirjasta päivittäen se Python 3 -muotoon sisällysluettelon mukaan edeten. #[https://en.wikibooks.org/wiki/Python_Programming Englanninkielisestä python kirjasta] voisi ottaa vinkkiä sisällön täydentämiseen. ==Sisällys== # Johdanto ## [[/Yleistä/]] ## [[/Syntaksi/]] ## [[/Operaattorit/]] ## [[/Ohjelman luonti/]] ## [[/Interaktiivinen Python-tulkki/]] # Tietotyypit ja tietorakenteet ## [[/Luvut/]] ## [[/Merkkijonot/]] (string) ## [[/Lista/]] (list) ## [[/Monikko/]] (tuple) ## [[/Sanakirja/]] (dict) ## [[/Joukko/]] (set) # Ohjausrakenteet ## [[/if-lause/]] ## [[/while-silmukka/]] ## [[/for-silmukka/]] ## [[/Virheidenhallinta/]] # Muut kielen rakenteet ## [[/Funktio/]] ## [[/Luokka/]] ## [[/Moduuli/]] ## [[/Pakkaus/]] # Syöte ja tulostus ## [[/Tulostus standarditulostukseen/]] ## [[/Standardisyötteestä lukeminen/]] ## [[/Tiedosto/]] ## [[/Komentoriviargumentit/]] # Lisää sekvenssityypeistä ## [[/Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla/]] # Lisää funktioista ## [[/Sisäiset funktiot/]] ## [[/Korkeamman asteen funktiot/]] ## [[/Generaattorifunktiot/]] # Lisää luokista ## [[/Iteraattorit/]] ## [[/Operaattoreiden kuormittaminen/]] ## [[/Kontekstimanageri/]] # Graafinen käyttöliittymä ## [[/GUI/]] # Harjoitustehtäviä ## [[/Hello, world!/]] ## [[/Wikishakkisivu/]] # Lisätiedot ja lähteet ## [[/Aiheesta muualla/]] __NOTOC__ {{Python 3}} [[Luokka:Python 3|*]] [[en:Programming:Python]] 7h2ktcoapp267spipdhibvqn8nbttju 140397 140353 2022-08-23T06:18:05Z Hunsvotti 6338 /* Sisällys */ + osa Python-tulkki wikitext text/x-wiki {{Edellinen-seuraava|Aiheesta muualla|Yleistä}} {{Haku kirjasta}} Python on monipuolinen tulkattava ohjelmointikieli, joka on alun perin kehitetty yhdistämään skriptikielten ja tavanomaisten ohjelmointikielten hyvät puolet. Pythonia pidetään helppona oppia sen yksinkertaisen syntaksin ja korkean tason tietorakenteiden takia. Monet suosittelevat sitä ensimmäiseksi ohjelmointikieleksi. Pythonia on usein verrattu sellaisiin kieliin kuin Perl, Java, Ruby, Tcl ja Scheme. Tämä kirja käsittelee Python-ohjelmointikielen versiota 3. Koska 3. versio ei ole täysin yhteensopiva 2. version kanssa on siitä oma kirjansa [[Python 2]]. ==Kirjoitussuunitelma== #Kopioidaan sisältö Python 2 -kirjasta päivittäen se Python 3 -muotoon sisällysluettelon mukaan edeten. #[https://en.wikibooks.org/wiki/Python_Programming Englanninkielisestä python kirjasta] voisi ottaa vinkkiä sisällön täydentämiseen. ==Sisällys== # Johdanto ## [[/Yleistä/]] ## [[/Syntaksi/]] ## [[/Operaattorit/]] ## [[/Ohjelman luonti/]] ## [[/Python-tulkki/]] ## [[/Interaktiivinen Python-tulkki/]] # Tietotyypit ja tietorakenteet ## [[/Luvut/]] ## [[/Merkkijonot/]] (string) ## [[/Lista/]] (list) ## [[/Monikko/]] (tuple) ## [[/Sanakirja/]] (dict) ## [[/Joukko/]] (set) # Ohjausrakenteet ## [[/if-lause/]] ## [[/while-silmukka/]] ## [[/for-silmukka/]] ## [[/Virheidenhallinta/]] # Muut kielen rakenteet ## [[/Funktio/]] ## [[/Luokka/]] ## [[/Moduuli/]] ## [[/Pakkaus/]] # Syöte ja tulostus ## [[/Tulostus standarditulostukseen/]] ## [[/Standardisyötteestä lukeminen/]] ## [[/Tiedosto/]] ## [[/Komentoriviargumentit/]] # Lisää sekvenssityypeistä ## [[/Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla/]] # Lisää funktioista ## [[/Sisäiset funktiot/]] ## [[/Korkeamman asteen funktiot/]] ## [[/Generaattorifunktiot/]] # Lisää luokista ## [[/Iteraattorit/]] ## [[/Operaattoreiden kuormittaminen/]] ## [[/Kontekstimanageri/]] # Graafinen käyttöliittymä ## [[/GUI/]] # Harjoitustehtäviä ## [[/Hello, world!/]] ## [[/Wikishakkisivu/]] # Lisätiedot ja lähteet ## [[/Aiheesta muualla/]] __NOTOC__ {{Python 3}} [[Luokka:Python 3|*]] [[en:Programming:Python]] 4a9es6gnbs3qr598ph643a14vjy43v2 140408 140397 2022-08-23T06:59:45Z Hunsvotti 6338 /* Sisällys */ + vianetsintä wikitext text/x-wiki {{Edellinen-seuraava|Aiheesta muualla|Yleistä}} {{Haku kirjasta}} Python on monipuolinen tulkattava ohjelmointikieli, joka on alun perin kehitetty yhdistämään skriptikielten ja tavanomaisten ohjelmointikielten hyvät puolet. Pythonia pidetään helppona oppia sen yksinkertaisen syntaksin ja korkean tason tietorakenteiden takia. Monet suosittelevat sitä ensimmäiseksi ohjelmointikieleksi. Pythonia on usein verrattu sellaisiin kieliin kuin Perl, Java, Ruby, Tcl ja Scheme. Tämä kirja käsittelee Python-ohjelmointikielen versiota 3. Koska 3. versio ei ole täysin yhteensopiva 2. version kanssa on siitä oma kirjansa [[Python 2]]. ==Kirjoitussuunitelma== #Kopioidaan sisältö Python 2 -kirjasta päivittäen se Python 3 -muotoon sisällysluettelon mukaan edeten. #[https://en.wikibooks.org/wiki/Python_Programming Englanninkielisestä python kirjasta] voisi ottaa vinkkiä sisällön täydentämiseen. ==Sisällys== # Johdanto ## [[/Yleistä/]] ## [[/Syntaksi/]] ## [[/Operaattorit/]] ## [[/Ohjelman luonti/]] ## [[/Python-tulkki/]] ## [[/Interaktiivinen Python-tulkki/]] # Tietotyypit ja tietorakenteet ## [[/Luvut/]] ## [[/Merkkijonot/]] (string) ## [[/Lista/]] (list) ## [[/Monikko/]] (tuple) ## [[/Sanakirja/]] (dict) ## [[/Joukko/]] (set) # Ohjausrakenteet ## [[/if-lause/]] ## [[/while-silmukka/]] ## [[/for-silmukka/]] ## [[/Virheidenhallinta/]] # Muut kielen rakenteet ## [[/Funktio/]] ## [[/Luokka/]] ## [[/Moduuli/]] ## [[/Pakkaus/]] # Syöte ja tulostus ## [[/Tulostus standarditulostukseen/]] ## [[/Standardisyötteestä lukeminen/]] ## [[/Tiedosto/]] ## [[/Komentoriviargumentit/]] # Vianetsintä ## [[/<tt>assert</tt> ja <tt>__debug__</tt>/]] ## [[/Debugger <tt>pdb</tt>/]] # Lisää sekvenssityypeistä ## [[/Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla/]] # Lisää funktioista ## [[/Sisäiset funktiot/]] ## [[/Korkeamman asteen funktiot/]] ## [[/Generaattorifunktiot/]] # Lisää luokista ## [[/Iteraattorit/]] ## [[/Operaattoreiden kuormittaminen/]] ## [[/Kontekstimanageri/]] # Graafinen käyttöliittymä ## [[/GUI/]] # Harjoitustehtäviä ## [[/Hello, world!/]] ## [[/Wikishakkisivu/]] # Lisätiedot ja lähteet ## [[/Aiheesta muualla/]] __NOTOC__ {{Python 3}} [[Luokka:Python 3|*]] [[en:Programming:Python]] l9nmz634yokaeduij7pnmth4e7vpk9d 140409 140408 2022-08-23T07:00:28Z Hunsvotti 6338 /* Sisällys */ wikitext text/x-wiki {{Edellinen-seuraava|Aiheesta muualla|Yleistä}} {{Haku kirjasta}} Python on monipuolinen tulkattava ohjelmointikieli, joka on alun perin kehitetty yhdistämään skriptikielten ja tavanomaisten ohjelmointikielten hyvät puolet. Pythonia pidetään helppona oppia sen yksinkertaisen syntaksin ja korkean tason tietorakenteiden takia. Monet suosittelevat sitä ensimmäiseksi ohjelmointikieleksi. Pythonia on usein verrattu sellaisiin kieliin kuin Perl, Java, Ruby, Tcl ja Scheme. Tämä kirja käsittelee Python-ohjelmointikielen versiota 3. Koska 3. versio ei ole täysin yhteensopiva 2. version kanssa on siitä oma kirjansa [[Python 2]]. ==Kirjoitussuunitelma== #Kopioidaan sisältö Python 2 -kirjasta päivittäen se Python 3 -muotoon sisällysluettelon mukaan edeten. #[https://en.wikibooks.org/wiki/Python_Programming Englanninkielisestä python kirjasta] voisi ottaa vinkkiä sisällön täydentämiseen. ==Sisällys== # Johdanto ## [[/Yleistä/]] ## [[/Syntaksi/]] ## [[/Operaattorit/]] ## [[/Ohjelman luonti/]] ## [[/Python-tulkki/]] ## [[/Interaktiivinen Python-tulkki/]] # Tietotyypit ja tietorakenteet ## [[/Luvut/]] ## [[/Merkkijonot/]] (string) ## [[/Lista/]] (list) ## [[/Monikko/]] (tuple) ## [[/Sanakirja/]] (dict) ## [[/Joukko/]] (set) # Ohjausrakenteet ## [[/if-lause/]] ## [[/while-silmukka/]] ## [[/for-silmukka/]] ## [[/Virheidenhallinta/]] # Muut kielen rakenteet ## [[/Funktio/]] ## [[/Luokka/]] ## [[/Moduuli/]] ## [[/Pakkaus/]] # Syöte ja tulostus ## [[/Tulostus standarditulostukseen/]] ## [[/Standardisyötteestä lukeminen/]] ## [[/Tiedosto/]] ## [[/Komentoriviargumentit/]] # Vianetsintä ## [[/assert ja __debug__|<tt>assert</tt> ja <tt>__debug__</tt>/]] ## [[/Debuggeri pdb|Debuggeri <tt>pdb</tt>/]] # Lisää sekvenssityypeistä ## [[/Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla/]] # Lisää funktioista ## [[/Sisäiset funktiot/]] ## [[/Korkeamman asteen funktiot/]] ## [[/Generaattorifunktiot/]] # Lisää luokista ## [[/Iteraattorit/]] ## [[/Operaattoreiden kuormittaminen/]] ## [[/Kontekstimanageri/]] # Graafinen käyttöliittymä ## [[/GUI/]] # Harjoitustehtäviä ## [[/Hello, world!/]] ## [[/Wikishakkisivu/]] # Lisätiedot ja lähteet ## [[/Aiheesta muualla/]] __NOTOC__ {{Python 3}} [[Luokka:Python 3|*]] [[en:Programming:Python]] tlac80bcr47g6jjc2m7ecdtycyegtm7 140410 140409 2022-08-23T07:00:48Z Hunsvotti 6338 /* Sisällys */ wikitext text/x-wiki {{Edellinen-seuraava|Aiheesta muualla|Yleistä}} {{Haku kirjasta}} Python on monipuolinen tulkattava ohjelmointikieli, joka on alun perin kehitetty yhdistämään skriptikielten ja tavanomaisten ohjelmointikielten hyvät puolet. Pythonia pidetään helppona oppia sen yksinkertaisen syntaksin ja korkean tason tietorakenteiden takia. Monet suosittelevat sitä ensimmäiseksi ohjelmointikieleksi. Pythonia on usein verrattu sellaisiin kieliin kuin Perl, Java, Ruby, Tcl ja Scheme. Tämä kirja käsittelee Python-ohjelmointikielen versiota 3. Koska 3. versio ei ole täysin yhteensopiva 2. version kanssa on siitä oma kirjansa [[Python 2]]. ==Kirjoitussuunitelma== #Kopioidaan sisältö Python 2 -kirjasta päivittäen se Python 3 -muotoon sisällysluettelon mukaan edeten. #[https://en.wikibooks.org/wiki/Python_Programming Englanninkielisestä python kirjasta] voisi ottaa vinkkiä sisällön täydentämiseen. ==Sisällys== # Johdanto ## [[/Yleistä/]] ## [[/Syntaksi/]] ## [[/Operaattorit/]] ## [[/Ohjelman luonti/]] ## [[/Python-tulkki/]] ## [[/Interaktiivinen Python-tulkki/]] # Tietotyypit ja tietorakenteet ## [[/Luvut/]] ## [[/Merkkijonot/]] (string) ## [[/Lista/]] (list) ## [[/Monikko/]] (tuple) ## [[/Sanakirja/]] (dict) ## [[/Joukko/]] (set) # Ohjausrakenteet ## [[/if-lause/]] ## [[/while-silmukka/]] ## [[/for-silmukka/]] ## [[/Virheidenhallinta/]] # Muut kielen rakenteet ## [[/Funktio/]] ## [[/Luokka/]] ## [[/Moduuli/]] ## [[/Pakkaus/]] # Syöte ja tulostus ## [[/Tulostus standarditulostukseen/]] ## [[/Standardisyötteestä lukeminen/]] ## [[/Tiedosto/]] ## [[/Komentoriviargumentit/]] # Vianetsintä ## [[/assert ja __debug__|<tt>assert</tt> ja <tt>__debug__</tt>]] ## [[/Debuggeri pdb|Debuggeri <tt>pdb</tt>]] # Lisää sekvenssityypeistä ## [[/Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla/]] # Lisää funktioista ## [[/Sisäiset funktiot/]] ## [[/Korkeamman asteen funktiot/]] ## [[/Generaattorifunktiot/]] # Lisää luokista ## [[/Iteraattorit/]] ## [[/Operaattoreiden kuormittaminen/]] ## [[/Kontekstimanageri/]] # Graafinen käyttöliittymä ## [[/GUI/]] # Harjoitustehtäviä ## [[/Hello, world!/]] ## [[/Wikishakkisivu/]] # Lisätiedot ja lähteet ## [[/Aiheesta muualla/]] __NOTOC__ {{Python 3}} [[Luokka:Python 3|*]] [[en:Programming:Python]] f0xnqfisxuia6fy5xyk9leawqbgqcfc Malline:Python 3 10 12212 140370 105723 2022-08-22T14:11:04Z Hunsvotti 6338 + tyylitiedosto wikitext text/x-wiki <templatestyles src="Python 3/tyyli.css"/>{{Avattava | väri = | tekstinväri = | leveys = | lisätyylit = | kuva = | otsikko =[[Python 3]] | taustaväri = | sijoitus = }} {{Ryhmätaulu | r1 = Johdanto: | l1 = [[Python 3/Yleistä|Yleistä]] - [[Python 3/Syntaksi|Syntaksi]] - [[Python 3/Operaattorit|Operaattorit]] - [[Python 3/Ohjelman luonti|Ohjelman luonti]] | r2 = Tietotyypit ja tietorakenteet: | l2 = [[Python 3/Luvut|Luvut]] - [[Python 3/Merkkijonot|Merkkijonot]] - [[Python 3/Lista|Lista]] - [[Python 3/Monikko|Monikko (tuple)]] - [[Python 3/Sanakirja|Sanakirja]] - [[Python 3/Joukko|Joukko (set)]] | r3 = Ohjausrakenteet | l3 = [[Python 3/if-lause|if-lause]] - [[Python 3/while-silmukka|while-silmukka]] - [[Python 3/for-silmukka|for-silmukka]]<br> | r4 = Muut kielen rakenteet: | l4 = [[Python 3/Moduuli|Moduuli]] - [[Python 3/Luokka|Luokka]] - [[Python 3/Funktio|Funktio]] - [[Python 3/Virheidenhallinta|Virheidenhallinta]] - [[Python 3/Tiedosto|Tiedosto]] | r5 = Graafinen käyttöliittymä: | l5 = [[Python 3/GUI|GUI]] | r6 = Harjoitustehtäviä: | l6 = [[Python 3/Hello, world!|Hello, world!]] - [[Python 3/Wikishakkisivujen muokkaustehtäviä|Wikishakkisivujen muokkaustehtäviä]]<br> | r7 = Lisätiedot ja lähteet: | l7 = [[Python 3/Aiheesta muualla|Aiheesta muualla]] }} {{AvattavaLoppu}} {{#ifeq: {{BASEPAGENAME}} | Python 3 | [[Luokka:Python 3|{{SUBPAGENAME}}]]}}<noinclude> {{Mallineohje|-| Python 3 -kirjan navigaatiomalline. Lisää sivut, joiden ylänimi on Python 3 luokkaan Python 3. <pre> {{Python 3}} </pre> |3=Navigaatiomallineet }} </noinclude> 4b4anp7g6c0jps26cfy7qo65qu5v4z1 Python 3/Ohjelman luonti 0 12946 140375 139595 2022-08-23T05:27:53Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} Pythonin lähdekooditiedostoilla on tiedostopääte <tt>.py</tt>. Myös <tt>.pyw</tt> on mahdollinen Windowsilla, mutta sitä ei yleensä tarvita, koska se vain piilottaa konsolin. Tavukoodiksi käännettyjen ohjelmien tiedostopäätteet ovat <tt>.pyc</tt> tai <tt>.pyo</tt> (optimoitu). ;Esimerkkiohjelma: <syntaxhighlight lang="Python"> #!/usr/bin/env python3 import math print (math.sqrt(5)) </syntaxhighlight> ;Esimerkkiohjelman luonti: # Avaa Pythonin mukana tullut ''IDLE (Python GUI)'', kopioi ja liitä yllä oleva teksti editoriin. # Tallenna nimellä <tt>testi.py</tt>. Muista tiedostopääte <tt>.py</tt>, koska IDLE ei lisää tiedostomuotoa automaattisesti. # Siirry haluttuun kansioon (esim. Käynnistä -> Suorita... -> cmd.exe -> cd sijainti) # Jos käytät Linuxia, aseta ohjelmalle suoritusoikeudet komennolla ''chmod +x testi.py'' # Käynnistä ohjelma kirjoittamalla Windowsissa ''testi.py'' tai Linuxilla ''./testi.py'' # Ohjelma tulostaa: 2.2360679775 ==Exe== Python ohjelmakoodista voit myös tehdä suoraan käyttöjärjestelmästä ajettajan 'exe' tiedoston, esim. seuraavilla ohjelmilla: py2exe (Windows), py2app (Mac OSX), cxFreeze (Linux) ===Aiheesta muualla=== *[http://fi.wikiversity.org/wiki/Python-kielisen_ohjelmoinnin_perusteet Python-kielisen_ohjelmoinnin_perusteet] (Wikiopiston opintopiirin opiskeluohjeita) __NOTOC__ {{Python 3}} [[Luokka:Python|ohjelman luonti]] bjmo9an2pyra9f2jkddk8g5j7ei8go7 Python 3/Luvut 0 12947 140377 140297 2022-08-23T05:28:17Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} ;Pythonissa on kolme lukutyyppiä: {| class="wikitable" |- | kokonaisluku || <tt>int</tt> || |- | liukuluku || <tt>float</tt> || |- | kompleksiluku || <tt>complex</tt> || kompleksiluvut esitetään muodossa z = x + yj, missä j on imaginääriyksikkö |} Luvun tyyppiä ei tarvitse määritellä, koska Python tekee sen automaattisesti. Kokonaisluvut ovat lukuja, joilla ei ole desimaaliosaa. Ne voivat olla positiivisia tai negatiivisia. Kokonaisluvut voivat olla miten suuria tahansa. <syntaxhighlight lang="Python"> x = 5 y = -23 z = 18768765456465897097890986957645337829025751100581775023 </syntaxhighlight> Liukuluvuilla on kokonaisosa ja desimaaliosa. Erottimena käytetään pistettä. <syntaxhighlight lang="Python"> x = 5.25 </syntaxhighlight> Liukuluvut voi antaa myös tieteellisessä muodossa eli eksponenttimuodossa. Esim. -1.0e-03 = -1,0 &middot; 10<sup>3</sup> = 0,001. Liukuluvun voi pyöristää sisäänrakennetulla <code>round</code>-funktiolla. Funktiolle annetaan luku ja haluttu desimaalien määrä. <syntaxhighlight lang="Python"> x = -1e-06 y = -1.0e-03 </syntaxhighlight> Kompleksiluvuissa käytetään i:n sijasta j:tä. <syntaxhighlight lang="Python"> x = -1.0+2.5j </syntaxhighlight> Luvut voi kirjoittaa desimaali-, binaari-, oktaali- tai heksadesimaalimuodossa. Luvun eteen kirjoitetaan tällöin lukujärjestelmän osoittava etuliite. {| class="wikitable" |- ! lukujärjestelmä !! etuliite |- | desimaali || (ei mitään) |- | binaari || 0b |- | oktaali || 0o |- | heksadesimaali || 0x |- |} Luvuissa voi lisäksi käyttää alaviivaa (_) ryhmittelymerkkinä tekemään luvusta helppolukuisemman. <syntaxhighlight lang="Python"> 39_000_000 0b1100_0101 0xff_01_ab_2b </syntaxhighlight> == Pyöristäminen == <syntaxhighlight lang="Python"> >>> π = 3.141592653589793 >>> round(π, 3) 3.142 </syntaxhighlight> Kokonaislukujen kerrannaisiin voi pyöristää antamalla negatiivisen luvun toiseksi parametriksi. Luku (sen itseisarvo) tarkoittaa silloin nollien määrää. <syntaxhighlight lang="Python"> >>> round(182889477, -3) 182889000 </syntaxhighlight> Huomaa, että pyöristys ei aina vastaa täysin koulussa opetettua pyöristystapaa siitä johtuen että liukulukuja ei voi täysin tarkasti tietokoneilla esittää. == Muuttaminen tyyppien välillä == Luvun tyyppi muuttuu määräytyy automaattisesti sen mukaan mitä operaatio palauttaa. <syntaxhighlight lang="Python"> >>> x = 5 >>> type(x) <class 'int'> >>> y = x / 4 >>> y 1.25 >>> type(y) <class 'float'> >>> z = y + 2j >>> z (1.25+2j) >>> type(z) <class 'complex'> </syntaxhighlight> Tyypin voi myös muuttaa erikseen ilmaistuna tyyppimuunnosfunktioilla <code>int(), float()</code> ja <code>complex()</code>. <syntaxhighlight lang="Python"> >>> x = 5 >>> float(x) 5.0 >>> y = x / 4 >>> complex(y) (1.25+0j) </syntaxhighlight> Liukuluku on myös mahdollista muuttaa kokonaisluvuksi. Koska kokokonaisluku ei sisällä desimaaliosaa, saattaa operaatiossa hävitä osa informaatiosta. <syntaxhighlight lang="Python"> >>> y = 1.25 >>> int(y) 1 </syntaxhighlight> Liukuluvun muuttamiseen kokonaisluvuksi on siksi yleensä parempi käyttää <code>round</code>-funktiota. <syntaxhighlight lang="Python"> >>> round(1.2) 1 >>> round(1.8) 2 >>> round(1.5) 2 </syntaxhighlight> Kun hyvin suuri kokonaisluku muutetaan liukuluvuksi, aiheutuu virhe <code>OverflowError</code>, sillä kokonaisluvut voivat olla rajattoman suuria, mutta liukuluvut eivät. <syntaxhighlight lang="Python"> >>> float(9*10**1000) Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: int too large to convert to float </syntaxhighlight> Kompleksilukua ei voi muuttaa liukuluvuksi eikä kokonaisluvuksi tyyppimuunnosfunktioilla. Kompleksiluvun reaaliosan saa sen <code>real</code>-jäsenestä ja imaginääriosan <code>imag</code>-jäsenestä. <syntaxhighlight lang="Python"> >>> z = 1.25+2j >>> z.real 1.25 >>> z.imag 2.0 </syntaxhighlight> == Merkkijonon muuttaminen luvuksi == Merkkijono muutetaan kokonaisluvuksi <code>int</code>-funktiolla. <syntaxhighlight lang="Python"> >>> int("333") 333 </syntaxhighlight> Jos syötettä ei voi tulkita kokonaisluvuksi aiheutuu virhe. <syntaxhighlight lang="Python"> >>> int("kolme") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'kolme' >>> int("3.3") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '3.3' </syntaxhighlight> Funktiolle <code>int</code> voi lisäksi antaa toisena parametrina lukukannan (väliltä 2–36). <syntaxhighlight lang="Python"> >>> int("b8", 16) 184 >>> int("01011100", 2) 92 >>> int("17", 8) 15 >>> int('f08z', 36) 700163 </syntaxhighlight> Luku voi alkaa kannan etuliitteellä (0x, 0o tai 0b). <syntaxhighlight lang="Python"> >>> int("0xb8", 16) 184 >>> int("0b01011100", 2) 92 >>> int("0o17", 8) 15 </syntaxhighlight> Merkkijono muutetaan liukuluvuksi <code>float</code>-funktioilla. <syntaxhighlight lang="Python"> >>> float("3.3") 3.3 >>> float("3.3e-4") 0.00033 </syntaxhighlight> Jos merkkijonon arvo on liian suuri liukuluvuksi, tulee arvoksi <code>inf</code> <syntaxhighlight lang="Python"> >>> iso = "9" * 10000 >>> float(iso) inf </syntaxhighlight> == Luvun muuttaminen merkkijonoksi == Luvun voi muuttaa kymmenkantaiseksi merkkijonoksi <code>str</code>-funktiolla. <syntaxhighlight lang="Python"> >>> str(15) '15' >>> str(3.3) '3.3' >>> str(3.3e-4) '0.00033' </syntaxhighlight> Numeron voi muuttaa heksadesimaali-, oktaali- tai binaarimuotoon funktioilla <code>hex()</code>, <code>oct()</code> ja <code>bin()</code>. <syntaxhighlight lang="Python"> >>> hex(15) '0xf' >>> oct(15) '0o17' >>> bin(15) '0b1111' </syntaxhighlight> Tarkemmin luvun muuttamisen voi tehdä f-merkkijonoilla tai muotoiluoperaattorilla, joita käsitellään seuraavassa luvussa. ==Aiheesta muualla== *[http://fi.wikiversity.org/wiki/Python-kielisen_ohjelmoinnin_perusteet Python-kielisen_ohjelmoinnin_perusteet] (Wikiopiston opintopiirin opiskeluohjeita) __NOTOC__ {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] lottyr6x9gvuhl4h5954c48vud57a13 Python 3/Moduuli 0 13088 140379 139663 2022-08-23T05:29:32Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} ;1. haetaan: <syntaxhighlight lang="Python"> import math </syntaxhighlight> ;2. käytetään: <syntaxhighlight lang="Python"> print (math.sqrt(10)) # 3.16227766017 </syntaxhighlight> Tässä haettiin math-moduuli import-komennolla. Math-moduuli on tavallinen Python-tiedosto, jossa on luokka nimeltä sqrt, johon luku 10 lähetetään ja josta luku palautuu käsiteltynä. Omia moduuleja voi tehdä ja niillä ohjelma jakautuu useisiin tiedostoihin, ''ohjelmistoksi''. Pythonin peruskirjasto on laaja ja sisältää moduuleja perushommiin. ==Oma moduuli== tiedosto ''custom_module.py'', jossa on luokka. <syntaxhighlight lang="Python"> class Replacer: def __init__(self): pass # passataan def change(self, string): string = string.replace('Hello', 'Good morning') return string </syntaxhighlight> Muuttaa merkkijonon "Hello, world" muotoon "Good morning, world!". ===Kutsutaan pääohjelmassa=== '''1. haetaan''' <syntaxhighlight lang="Python"> import custom_module # Muista välin tilalle alaviiva! </syntaxhighlight> '''2. kutsutaan''' '''2.1''' <syntaxhighlight lang="Python"> print (custom_module.Replacer().change('Hello, world!')) # moduulin_nimi.Luokka().funktio() </syntaxhighlight> '''2.2''' <syntaxhighlight lang="Python"> replacer = custom_module.Replacer() # moduulin_nimi.Luokka() print (Replacer.change('Hello, world!')) # ylla_oleva.funktio() </syntaxhighlight> print-komento on näissä, koska change-funktion palauttama merkkijono halutaan tulostaa. Moduulin ohjeteksti kirjoitetaan tiedoston alkuun. <syntaxhighlight lang="Python"> """Hyödyllisiä luokkia ja funktioita. """ class Replacer: def __init__(self): pass # passataan </syntaxhighlight> ==Muita tapoja hakea moduuli== <syntaxhighlight lang="Python"> import math as MATH # vaihdetaan nimeä from math import sqrt # haetaan yksi jäsen from math import sin, cos # haetaan useita jäseniä from math import * # haetaan kaikki luokat from math import sin as SIN # muutetaan haetun funktion nimeä </syntaxhighlight> ==Absoluuttiset ja suhteelliset polut== Projektin moduuleihin voi viitata absoluuttisella tai suhteellisella polulla. Absoluuttisessa viittaustavassa moduuleihin viitataan projektin juurihakemistosta alkaen. <syntaxhighlight lang="python"> import omapackage.omamooduuli # omamoduuli on tiedostossa <projektin juuri>/omapackage/omamoduuli.py </syntaxhighlight> Ylimmän tason moduulin edessä voi käyttää yhtä pisteitä viittaamaan ylähakemistoihin. Yksi piste tarkoittaa samaa hakemistoa, kaksi pistettä ylempää hakemistoa, kolme pistettä kahta ylempää hakemistoa ja niin edelleen. <syntaxhighlight lang="python"> import .omamoduuli # omamoduuli on tiedostossa ./omamoduuli.py import ..omamoduuli # omamoduuli on tiedostossa ../omamoduuli.py import ...omamoduuli # omamoduuli on tiedostossa ../../omamoduuli.py </syntaxhighlight> ==Muuta== Moduulin jäsenet voi listata komentotulkissa <tt>dir</tt>-funktiolla. <syntaxhighlight lang="python"> >>> import math >>> dir(math) ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc'] </syntaxhighlight> Moduulin tai sen jäsenen ohjetekstin saa näkyviin <tt>help</tt>-funktiolla. <syntaxhighlight lang="python"> >>> help(math.log) </syntaxhighlight> Tulostaa <pre> Help on built-in function log in module math: log(...) log(x, [base=math.e]) Return the logarithm of x to the given base. If the base not specified, returns the natural logarithm (base e) of x. </pre> ==Aiheesta muualla== *[http://fi.wikiversity.org/wiki/Python-kielisen_ohjelmoinnin_perusteet Python-kielisen_ohjelmoinnin_perusteet] (Wikiopiston opintopiirin opiskeluohjeita) __NOTOC__ {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] mixiv4efayi5mmwt9srtofmk7jeb2f0 Python 3/Tiedosto 0 13092 140383 140213 2022-08-23T05:32:22Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} == Tiedoston avaaminen == Tiedosto avataan <code>open</code>-funktiolla. Esimmäiseksi parametriksi annetaan tiedoston nimi. Toiseksi parametriksi ''mode'' annetaan [[#Tiedostojen avaustilat|moodi]], jossa tiedosto avataan. <syntaxhighlight lang="Python"> file = open('tiedosto.txt', 'r') </syntaxhighlight> Lopuksi tiedosto pitää vapauttaa muuhun käyttöön sulkemalla se. <syntaxhighlight lang="Python"> file.close() </syntaxhighlight> Usein on parempi käyttää kontekstimanageria <code>with</code>-avainsanalla tiedoston avaamiseen, jolloin tiedosto suljetaan automaattisesti lohkosta poistuttaessa. (<tt>with</tt>-avainsanaa käsitellään tarkemmin [[../Kontekstimanageri|Kontekstimanageri]]-luvussa.) <syntaxhighlight lang="Python"> with open('tiedosto.txt', 'r') as file: # Tehdään jotain sisällöllä. pass </syntaxhighlight> == Tiedoston lukeminen == Tiedostoa voi lukea kolmella eri tavalla. Esimerkeissä käytettävän tiedosto.txt sisältö. <pre> Ensimmäinen rivi. Toinen rivi. Kolmas rivi. </pre> Kaikki tiedoston rivi voi myös lukea lävitse iteroimalla suoraan file-objektia. <syntaxhighlight lang="Python"> with open("tiedosto.txt", "r") as file: for rivi in file: if not rivi: break print(rivi) </syntaxhighlight> '''Tuloste''' <pre> Ensimmäinen rivi. Toinen rivi. Kolmas rivi. </pre> ===read=== read palauttaa koko tiedoston yhtenä merkkijonona, jos luettavien merkkien määrää ei määritetä koko tiedosto luetaan. Esimerkki: <syntaxhighlight lang="Python"> # Avataan tiedosto with open('tiedosto.txt', 'r') as file: # Luetaan tiedoston sisältö data = file.read() #tulostetaan tiedoston sisältö print (data) </syntaxhighlight> '''Tuloste''' <pre> Ensimmäinen rivi. Toinen rivi. Kolmas rivi. </pre> ===readline=== Metodi <code>readline</code> lukee tiedostoa rivi kerrallaan. <syntaxhighlight lang="Python"> # Avataan tiedosto with open('tiedosto.txt', 'r') as file: # Ensimmäinen rivi print(file.readline()) # Toinen rivi print(file.readline()) </syntaxhighlight> '''Tuloste''' <pre> Ensimmäinen rivi. Toinen rivi. </pre> ===readlines=== readline palauttaa tiedoston [[Python/Lista|listana]]. Listassa jokainen rivi on omassa alkiossa. Esimerkki: <syntaxhighlight lang="Python"> with open('tiedosto.txt', 'r') as file: # Luetaan tiedoston sisältö data = file.readlines() # Tulostetaan luettu taulukko print(data) # Tulostetaan rivi kerralla for rivi in data: print(rivi) </syntaxhighlight> '''Tuloste''' <pre> ['Ensimmäinen rivi.\n', 'Toinen rivi.\n', 'Kolmas rivi.\n'] Ensimmäinen rivi. Toinen rivi. Kolmas rivi. </pre> Sekä <code>readline</code> että <code>readlines</code> jättävät rivinvaihtomerkin ('\n') rivin loppuun. Merkin voi poistaa esimerkiksi <code>str</code>-tyypin <code>rstrip</code>-metodilla, joka poistaa annetut merkit merkkijonon lopusta tai kaikki tyhjämerkit, jos mitään ei anneta. <syntaxhighlight lang="Python"> >>> rivi.rstrip('\n') 'Ensimmäinen rivi.' </syntaxhighlight> Huomaa, että rivinvaihtomerkkinä on aina '\n' käyttöjärjestelmästä riippumatta, koska kaikki eri rivinvaihtokäytännöt ('\n', '\r\n' ja '\r') muutetaan sisäisesti tähän muotoon, kun tiedosto avataan 'r'-moodissa. ==Tiedostoon kirjoittaminen== Tiedostoon kirjoitetaan write() funktiolla. <syntaxhighlight lang="Python"> #!/usr/bin/python3 # -*- coding: utf-8 -*- #luodaan uusi tiedosto file = open('tiedosto.txt', 'w') text = "Ensimmäinen rivi.\nToinen rivi.\nKolmas rivi." #kirjoitetaan tiedostoon file.write(text) #suljetaan tiedosto file.close() </syntaxhighlight> ==Tiedoston avaustilat== Tiedoston avaustila määritetään open funktiossa. <syntaxhighlight lang="Python"> open('Tiedoston nimi', 'Tiedoston avaustila') </syntaxhighlight> {| class="wikitable" |- ! Tila !! Tyyppi !! Käsittelee tietoa !! Kuvaus |- | r || Lukutila || Merkkeinä || Palauttaa IOError jos tiedostoa ei löydy. |- | rb || Lukutila || Bittiarvona || Palauttaa IOError jos tiedostoa ei löydy. |- | a || Kirjoitustila || Merkkeinä || Jos tiedostoa ei ole, sellainen luodaan. Jos tiedosto on olemassa, jatketaan sen perään kirjoittamista. |- | w || Kirjoitustila || Merkkeinä || Jos tiedostoa ei ole, sellainen luodaan. Jos tiedosto on olemassa, vanha sisältö tuhotaan ja uusi kirjoitetaan sen tilalle. |- | wb || Kirjoitustila || Bittiarvona || Jos tiedostoa ei ole, sellainen luodaan. Jos tiedosto on olemassa, jatketaan sen perään kirjoittamista. |} Tilat ”r” ja ”rb” eroavat siten, että ”r”-tilassa luettessa sisältö palautetaan merkkijonona (<tt>str</tt>-tyyppi) annetussa tai oletusmerkistökoodauksessa, ”rb”-tilassa se palautetaan <tt>bytes</tt>-tyyppinä. ”r”-tilassa myös rivinvaihdot palautetaan aina ”\n”-muodossa riippumatta siitä onko tiedostossa käytetty sitä vai muotoja ”\n\r” tai ”\r”. ==Tiedostojen vertailu== Esimerkeissä käytetään kahta tekstitiedostoa, joissa on useita lyhyitä rivejä. Tiedostoissa voi olla vaikka wikilinkkejä: * <nowiki>[[linkki]]</nowiki> * <nowiki>[[Linkki]]</nowiki> <syntaxhighlight lang="Python"> # Avataan tiedosto f1.txt lukemista varten f1 = open('f1.txt', 'r') # Luetaan koko tiedosto merkkijonoksi s1 s1 = f1.read() # Suljetaan tiedosto f1 - tiedosto voidaan sulkea heti kun se on luettu f1.close() # Tehdään samat kuin yllä f2 = open('f2.txt', 'r') s2 = f2.read() f2.close() </syntaxhighlight> Nyt tiedostojen sisällöt ovat muuttujien s1 ja s2 takana merkkijonoina. ===Poistetut rivit=== Tarkoituksena on katsoa, mitkä rivit puuttuvat tiedostosta f2.txt mutta ovat tiedostossa f1.txt. <syntaxhighlight lang="Python"> # Käytetään merkkijonoon split-funktiota, joka pätkii tekstin rivinvaihtojen (\n) kohdilta listaksi. l1 = s1.split('\n') l2 = s2.split('\n') # Käydään l1-lista läpi alkio (i) kerrallaan. for i in l1: # Jos i ei ole listassa l2 se tulostetaan ruudulle if i not in l2: print (i) </syntaxhighlight> Harjoituksia: * Muokkaa yllä oleva näyttämään lisätyt rivit. * Tai muokkaa se sellaiseksi, ettei kirjainkoolla ole väliä (linkki ja Linkki olisivat sama). ===Difflib=== Pythonin kirjastoon kuuluu difflib.py, jolla voi helposti vertailla kahta tiedostoa. Katsotaan, mitkä rivit on lisätty tiedostoon tai poistettu tiedostosta f2.txt. <syntaxhighlight lang="Python"> # Tyhjä lista l = [] # Muutetaan muuttujien nimet newtext = s1 oldtext = s2 # Lähetetään difflibin ndiff-luokkaan oldtext ja newtext pätkittynä listoiksi. # Käydään ndiffin palauttama merkkijono läpi rivi (line) kerrallaan. for line in difflib.ndiff(oldtext.splitlines(), newtext.splitlines()): # Takaisin tulleessa merkkijonossa lisäyksien eteen on lisätty plus ja poistojen miinus. # Tarvitsemme vain muutetut rivit eli rivit jotka alkavat em. merkeillä. if line[0] in ('+', '-'): # Lisätään line listaan l l.append(line) # Yhdistetään lista rivinvaihdoilla diff = '\r\n'.join(l) # Tulostetaan merkkijono diff print (diff) </syntaxhighlight> ===Aiheesta muualla=== *[http://fi.wikiversity.org/wiki/Python-kielisen_ohjelmoinnin_perusteet Python-kielisen_ohjelmoinnin_perusteet] (Wikiopiston opintopiirin opiskeluohjeita) {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] ajz5svd6cntqqxgeodwlgmovqwnbxol Python 3/GUI 0 13093 140392 139586 2022-08-23T05:33:47Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} ==Tkinter== Tkinter perustuu Tcl-nimisen ohjelmointikielen Tk-käyttöliittymäkirjastoihin. Tkinter kuuluu Python-tulkin oletuspaketteihin. Esimerkki: <syntaxhighlight lang="Python"> #!/usr/bin/python3 # -*- coding: utf-8 -*- import tkinter class HelloWorld: def __init__(self): window = tkinter.Tk() # ikkunan otsikko window.title("Hei") # Ikkunan koko leveys x korkeus window.geometry("200x150") # teksti hello = tkinter.Label(window, text = "Hei maailma!") # lisätään teksti ikkunaan hello.pack() # luodaan ikkuna window.mainloop() if __name__ == "__main__": HelloWorld() </syntaxhighlight> ===Painike=== Painikkeen luominen Tkinterillä. Esimerkki: <syntaxhighlight lang="Python"> #!/usr/bin/python3 # -*- coding: utf-8 -*- import tkinter class HelloWorld: def __init__(self): window = tkinter.Tk() window.title("Hei") window.geometry("200x150") # luodaan painike button = tkinter.Button(window, text = "Hei!", command = self.hello) # lisätään painike ikkunaan button.pack() window.mainloop() def hello(self): print ("Hei!") if __name__ == "__main__": HelloWorld() </syntaxhighlight> ===Valikko=== Valikon luominen Tkinterillä. Esimerkki: <syntaxhighlight lang="Python"> #!/usr/bin/python3 # -*- coding: utf-8 -*- import tkinter import sys class HelloWorld: def __init__(self): window = tkinter.Tk() window.title("Hei") window.geometry("200x150") menubar = tkinter.Menu(window) window.config(menu=menubar) filemenu = tkinter.Menu(menubar) filemenu.add_command(label="Avaa", command=self.open) filemenu.add_separator() filemenu.add_command(label="Lopeta", command=self.quit) menubar.add_cascade(label="Tiedosto", menu=filemenu) window.mainloop() def open(self): print ("Valitsit avaa") def quit(self): print ("Valitsit lopeta") sys.exit(0) if __name__ == "__main__": HelloWorld() </syntaxhighlight> ===Syötekenttä=== Syötekentän luominen Tkinterillä. Esimerkki: <syntaxhighlight lang="Python"> #!/usr/bin/python3 # -*- coding: utf-8 -*- import tkinter class HelloWorld: def __init__(self): window = tkinter.Tk() window.title("Hei") window.geometry("200x150") self.text = tkinter.Entry(window) self.text.pack() button = tkinter.Button(window, text = "Tulosta", command = self.print_text) button.pack() window.mainloop() def print_text(self): print (tkinter.Entry.get(self.text)) if __name__ == "__main__": HelloWorld() </syntaxhighlight> ==PyGTK== pygtk on muuttunut hiukan python 3:n myötä. [[https://wiki.gnome.org/action/show/Projects/PyGObject/IntrospectionPorting?action=show&redirect=PyGObject%252FIntrospectionPorting Lisätietoa]]. [[https://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html Tutoriaali]].<br> PyGTK toimii Linuxilla, Windowsilla ja Mac OS X:llä. Python 2 esimerkki, ei testattu python 3:lla: <syntaxhighlight lang="Python"> import pygtk pygtk.require("2.0") import gtk class HelloWorld: def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("Hei") self.window.set_size_request(200, 150) hello = gtk.Label("Hei maailma!") self.window.add(hello) hello.show() self.window.show() gtk.main() if __name__ == "__main__": HelloWorld() </syntaxhighlight> ===Painike=== Painikkeen luominen PyGTKlla. Esimerkki: <syntaxhighlight lang="Python"> import pygtk pygtk.require("2.0") import gtk class HelloWorld: def __init__(self): self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("Hei") self.window.set_size_request(200, 150) self.button = gtk.Button("Klikkaa") self.button.connect("clicked", self.button_press, "Klikkaa") self.window.add(self.button) self.button.show() self.window.show() gtk.main() def button_press(self, widget, data): print "Painoit %s painiketta" % data if __name__ == "__main__": HelloWorld() </syntaxhighlight> ===Valikko=== Valikon luominen PyGTKlla. Esimerkki: <syntaxhighlight lang="Python"> import pygtk pygtk.require('2.0') import gtk class MenuExample(): def __init__(self): win = gtk.Window(gtk.WINDOW_TOPLEVEL) win.set_title("Hei") win.set_size_request(200, 150) menubar = gtk.MenuBar() file_item = gtk.MenuItem("_Tiedosto") file_item_sub = gtk.Menu() new = gtk.MenuItem("_Uusi") quit = gtk.MenuItem("_Lopeta") file_item_sub.append(new) file_item_sub.append(quit) file_item.set_submenu(file_item_sub) menubar.append(file_item) new.connect("activate", self.menu_press, "uusi") quit.connect("activate", self.menu_press, "lopeta") vbox = gtk.VBox() vbox.pack_start(menubar, False, True, 0) win.add(vbox) win.show_all() gtk.main() def menu_press(self, widget, data): print "Painoit %s" % data if __name__ == "__main__": MenuExample() </syntaxhighlight> ==wxPython== wxPython on erikseen ladattava kirjasto. Kirjastosta on vastikään saatu valmiiksi myös python 3 yhteensopiva versio. Lisätietoa: [[http://wxpython.org/ http://wxpython.org/]]<br> wxPython toimii Windowsilla, Linuxilla ja Mac OS X:llä. Python 2 esimerkki, ei testattu python 3:lla: <syntaxhighlight lang="Python"> import wx class TestFrame(wx.Frame): def __init__(self, parent, ID, title): wx.Frame.__init__(self, parent, -1, title, pos=(0, 0), size=(320, 240)) panel = wx.Panel(self, -1) text = wx.StaticText(panel, -1, "Test", wx.Point(10, 5), wx.Size(-1, -1)) class TestApp(wx.App): def OnInit(self): frame = TestFrame(None, -1, "Hello, world!") self.SetTopWindow(frame) frame.Show(True) return True if __name__ == '__main__': app = TestApp(0) app.MainLoop() </syntaxhighlight> ==Qt ja Python== Pythonille on Qt:stä kaksi eri versiota, PyQT ja PySide. PyQT on Phil Thompsonin (Riverbank Computing) kirjoittama jo QT 2.x ajalta saakka oleva kirjasto. PySide sai alkunsa 2009 kun Qt:n silloinen omistaja Nokia halusi LGPL-lisensoidun version kirjastosta. PyQT on kaksoislisensoitu, GPL tai kaupallinen lisenssi. ==Aiheesta muualla== *[http://fi.wikiversity.org/wiki/Python-kielisen_ohjelmoinnin_perusteet Python-kielisen_ohjelmoinnin_perusteet] (Wikiopiston opintopiirin opiskeluohjeita) {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] 6pznfz66tjvkpczgjk75gtzb4upxtb4 Malline:Edellinen-seuraava+ 10 19056 140395 139628 2022-08-23T06:16:33Z Hunsvotti 6338 wikitext text/x-wiki <noinclude> {{Mallineohje|-| Vastaava kuin {{malline|Edellinen-seuraava}}, mutta sivujen jäjestys luetaan Lua-sivulta ''Moduuli:EdellinenSeuraava/data/<kirjan nimi>''. Ks. esimerkiksi {{moduuli|EdellinenSeuraava/data/Musiikin taulukot}}. Kirjan sivujen ylälaitaan lisätään koodi <pre> {{Edellinen-seuraava+}} </pre> Kirjan nimi päätellään sivun nimestä. |3=Navigaatiomallineet }} </noinclude><includeonly>{{#invoke:EdellinenSeuraava|edSeur}} </includeonly> 2qk2c9i35ie2lhyh96duysxiu1n0m1e 140396 140395 2022-08-23T06:17:04Z Hunsvotti 6338 wikitext text/x-wiki <noinclude> {{Mallineohje|-| Vastaava kuin {{malline|Edellinen-seuraava}}, mutta sivujen jäjestys luetaan Lua-sivulta ''Moduuli:EdellinenSeuraava/data/<kirjan nimi>''. Ks. esimerkiksi [[Moduuli:EdellinenSeuraava/data/Musiikin taulukot|EdellinenSeuraava/data/Musiikin taulukot]] -moduuli. Kirjan sivujen ylälaitaan lisätään koodi <pre> {{Edellinen-seuraava+}} </pre> Kirjan nimi päätellään sivun nimestä. |3=Navigaatiomallineet }} </noinclude><includeonly>{{#invoke:EdellinenSeuraava|edSeur}} </includeonly> 27lyv0nwehtas56fzzbke8vbjd5chto Python 3/Sisäiset funktiot 0 19062 140386 140087 2022-08-23T05:32:53Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} Tässä käsitellään joitakin Pythonin sisäisiä funktioita. ==Tyyppimuunnosfunktiot== {| class="wikitable" ! Funktio !! Kuvaus |- | <tt>bool</tt> || Muuttaa annetun arvon totuusarvoksi. |- | <tt>complex</tt> || Muuttaa annetun arvon kompleksiluvuksi. |- | <tt>float</tt> || Muuttaa annetun arvon liukuluvuksi. |- | <tt>int</tt> || Muuttaa annetun arvon kokonaisluvuksi. |- | <tt>str</tt> || Muuttaa annetun arvon merkkijonoksi. |- |} ==Sekvenssimuuttujien funktiot== {| class="wikitable" ! Funktio !! Kuvaus |- | <tt>len</tt> || Palauttaa annetun listan, tuplen tai joukon pituuden tai koon. |- | <tt>list</tt> || Muuttaa annetun arvon listaksi. |- | <tt>tuple</tt> || Muuttaa annetun arvon monikoksi. |- | <tt>set</tt> || Muuttaa annetun arvon joukoksi. |- | <tt>frozenset</tt> || Muuttaa annetun arvon muuttamattomaksi joukoksi. |- | <tt>sorted</tt> || Palauttaa annetun listan tms. lajiteltuna listana. |- | <tt>zip</tt> || Yhdistää kaksi (tai useamman) listan uudeksi listaksi siten, että uuden listan alkiot muodostuvat vastaavien alkioiden pareista. |- |} <syntaxhighlight lang="python"> </syntaxhighlight> ==Matemaattiset funktiot== {| class="wikitable" ! Funktio !! Kuvaus |- | <tt>abs</tt> || Palauttaa lausekkeen absoluuttisen arvon. |- | <tt>max</tt> || Palauttaa suurimman annetuista luvuista. |- | <tt>min</tt> || Palauttaa pienimmän annetuista luvuista. |- | <tt>sum</tt> || Laskee annetun lukutaulukon luvut yhteen. |- | <tt>round</tt> || Pyöristää annetun liukuluvun haluttuun desimaalimäärään. |- |} <syntaxhighlight lang="python"> </syntaxhighlight> ==Loogiset funktiot== {| class="wikitable" ! Funktio !! Kuvaus |- | <tt>all</tt> || Palauttaa True, jos kaikki annetut arvot ovat tosia. |- | <tt>any</tt> || Palauttaa True, jos ainakin yksi annetuista arvoista on tosi. |- |} <syntaxhighlight lang="python"> </syntaxhighlight> ==Funktionaaliset funktiot== {| class="wikitable" ! Funktio !! Kuvaus |- | <tt>map</tt> || Kutsuu annettua funktiota jokaiselle annetun taulukon arvolle ja paluttaa niiden tulokset taulukkona. |- | <tt>filter</tt> || Palauttaa annetun taulukon ne arvot taulukkon, jolle annettu funktio palauttaa True. |- |} <syntaxhighlight lang="python"> </syntaxhighlight> ==Merkkijonofunktiot== {| class="wikitable" ! Funktio !! Kuvaus |- | <tt>chr</tt> || Palauttaa annettua koodia vastaavan merkin (yhden merkin pituisen merkkijonon). |- | <tt>format</tt> || Käytetään tekstin muotoiluun. |- | <tt>ord</tt> || Palauttaa annettun merkin koodin. |- |} <syntaxhighlight lang="python"> </syntaxhighlight> == Tiedostonkäsittely == {| class="wikitable" ! Funktio !! Kuvaus |- | <tt>open</tt> || Avaa annetun nimisen tiedoston luku-, kirjoitus- tai lisäysmoodissa ja palauttaa tiedostokahvan. |- |} <syntaxhighlight lang="python"> </syntaxhighlight> {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] 9gys54ytgh888lrw0v3cec2tkniymmr Python 3/Tulostus standarditulostukseen 0 19065 140382 139819 2022-08-23T05:31:50Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava+}} Komentoriviohjelman normaalitulostus kirjoitetaan standarditulostukseen (''stdout'') ja virhetilanteista aiheutuvat virheilmoitukset tulostetaan hyvän tavan mukaan standardivirheeseen (''stderr''). Syöte luetaan standardisyötteestä (''stdin''). Syötelähteitä ja tulostuskohteita voi olla muitakin, mutta nämä kolme avataan automaattisesti kaikkiin ohjelmiin. Standarditulostukseen tulostetaan Pythonissa <code>print</code>-funktiolla. Toisin kuin Python 2:ssa, Python3:ssa <code>print</code> on funktio eikä sisäänrakennettu komento. Siten se tarvitsee aina sulut parametrien ympärille. <syntaxhighlight lang="Python"> print("Hello world!") </syntaxhighlight> Print-funktiolle voi antaa useita parametreja, jotka voivat olla muunkin tyyppisiä kuin merkkijonoja. Print-funktio muuttaa ne automaattisesti merkkijonoksi. Minkä tahansa itse tehdyn luokan saa muuttumaan automaattisesti merkkijonoksi toteuttamalla sille <code>__str__</code>- tai <code>__repr__</code>-metodin. <syntaxhighlight lang="Python"> >>> totuus = False >>> luku = 3 >>> lista = [1, 2, 3] >>> print("Arvot ovat", totuus, luku, lista) Arvot ovat False 3 [1, 2, 3] </syntaxhighlight> Parametrien tulostuksen väliin lisätään oletuksena yksi välilyönti. Kaikkien tulostettavien perään lisätään oletuksena rivinvaihto. Väleihin tulostettavan tekstin voi vaihtaa antamalla nimetyn parametrin <code>sep</code>. (Merkintä ”\t” on tässä sarkainmerkin erikoismerkintä. Näitä merkkejä käsiteltiin [[Python 3/Merkkijonot|merkkijonojen yhteydessä]].) <syntaxhighlight lang="Python"> >>> tulos1 = 3 >>> tulos2 = 5 >>> tulos3 = 7 >>> print("Tulokset ovat:", tulos1, tulos2, tulos3, sep='\t') Tulokset ovat: 3 5 7 </syntaxhighlight> Loppuun tulostettavan tekstin voi vaihtaa antamalla nimetyn parametrin <code>end</code>. <syntaxhighlight lang="Python"> print("Tulokset ovat ", end='\t') print(tulos1, end='\t') print(tulos2, end='\t') print(tulos3) </syntaxhighlight> <pre> Tulokset ovat: 3 5 7 </pre> Merkkijonot voi luonnollisesti myös yhdistää muulla tavoin ennen <code>print</code>-funktiolle antamista. <syntaxhighlight lang="Python"> >>> print("Tulokset ovat: " + tulos1 + ", " + tulos2 + " ja " + tulos3) Tulokset ovat: 3, 5, 7 >>> print("Tulokset ovat: %d, %d ja %d" % (tulos1, tulos2, tulos3)) Tulokset ovat: 3, 5, 7 >>> print(f"Tulokset ovat: {tulos1}, {tulos2} ja {tulos3}) Tulokset ovat: 3, 5, 7 </syntaxhighlight> Nimetyllä parametrilla <code>file</code> voi vaihtaa tulostuskohteen (tai tiedoston). Esimerkiksi standardivirheeseen voi tulostaa antamalla <code>file</code>-parametriksi <code>sys.stderr</code>. <syntaxhighlight lang="Python"> >>> import sys >>> print("Lupa evätty!", file=sys.stderr) </syntaxhighlight> Yleiskäyttöoinen funktio, jota voi käyttää virheiden tulostukseen samaan tapaan kuin <code>print</code>-funktiota. <code>*args</code>- ja <code>**kwargs</code>-parametreja käsitellään [[Python 3/Funktio|funktioiden yhteydessä]]. <syntaxhighlight lang="Python"> def print_err(*args, **kwargs): print(*args, file=sys.stderr, **kwargs) </syntaxhighlight> {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] ed948bda16hyt8jttl743ibj93oqlqz Python 3/Korkeamman asteen funktiot 0 19069 140387 140116 2022-08-23T05:33:04Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} Korkeamman asteen funktioiksi sanotaan funktioita, jotka joko ottavat argumentteinaan yhden tai useamman funktion tai palauttavat funktion. Korkamman asteen funktioita käytetään paljon funktionaalisessa ohjelmoinnissa. Pythonissa on mahdollista käyttää korkeamman asteen funktioita. Monesti ne tekevät koodista helppolukuisempaa. == <tt>map</tt> == Sisäänrakennettu funktio <tt>map</tt> ottaa argumenteikseen funktion ''func'' ja yhden tai useamman iteroitavissa olevan olion kuten listan ja palauttaa arvot, jotka saadaan, kun funktiota ''func'' kutsutaan jokaiselle annetun listan arvolle. Huomaa, että <tt>map</tt> ei palauta listaa, vaan iteraattorin, joka on myös nimeltään <tt>map</tt>. Iteraattori muutetaan tässä erikseen listaksi <tt>list</tt>-funktiolla. Lambda on lyhyt nimetön funktio. Niitä käsiteltiin osiossa [[Python 3/Funktio#Lambdat|Funktio » Lambdat]]. Yhtä hyvin voisi käyttää tavallista funktiota. Iteraattoreita käsitellään olio-ohjelmointia käsittelevässä luvussa. <syntaxhighlight lang="python"> >>> list(map(lambda x: x**2, [1, 2, 3, 4, 5])) [1, 4, 9, 16, 25] </syntaxhighlight> Jos listoja tai muita iteroitavia on useampia, annetaan funktiolle ''func'' argumenteiksi vastaavat alkiot jokaisesta niistä. <syntaxhighlight lang="python"> >>> list(map(lambda x, y: x + y, [1, 2, 3], [4, 5, 6])) [5, 7, 9] </syntaxhighlight> <tt>Map</tt>-iteraattorin arvoja ei tietenkään tarvitse aina muuttaa listaksi, vaan ne voi myös iteroida lävitse. <syntaxhighlight lang="python"> for tulos in map(lambda x: x**2, [1, 2, 3, 4, 5]): print(tulos) </syntaxhighlight> '''Tulostaa:''' <pre> 1 4 9 16 25 </pre> Tarkasti sanoen <tt>map</tt>-objekti kutsuu funktiota ''func'' vasta siinä vaiheessa, kun arvot luetaan siitä. Esimerkiksi, kun se muutetaan listaksi. Yleensä <tt>map</tt>-funktiota käytetään vain funktioilla, joilla ei ole sivuvaikutuksia, jolloin tällä ei ole muuta merkitystä kuin, että funktiota ei kutsuta turhaan, jos kaikkia tuloksia ei tarvita. == <tt>filter</tt> == Sisäänrakennettu funktio <tt>filter</tt> ottaa parametrikseen funktion ''func'' ja iteroitavissa olevan olion esimerkiksi listan, ja palauttaa ne alkio, joille funktio ''func'' palauttaa True. <syntaxhighlight lang="python"> >>> list(filter(lambda x: x % 2 == 1, [1, 2, 3, 4, 5])) [1, 3, 5] </syntaxhighlight> Kuten <tt>map</tt> myös <tt>filter</tt> palauttaa iteraattorin, jolla voi käydä läpi tulokset. == <tt>sorted</tt> == Sisäänrakennettu funktiolle <tt>sorted</tt> voi antaa valinnaisena parametrina ''key'' funktion, joka palauttaa jokaiselle arvolle erikseen kutsuttuna arvon lajitteluavaimen. <tt>Sorted</tt> vastaa muuten <tt>list</tt>-tyypin <tt>sort</tt>-metodia, mutta palauttaa aina uuden listan, kun taas <tt>sort</tt> järjestää alkuperäisen listan. ''Key''-parametrille annetaan funktio, joka ottaa argumentikseen yksittäisen listan alkion ja palauttaa sille arvon jota käytetään alkioiden järjestyksen määräämiseen (mutta jota ei käytetä tuloslistassa). Funktio voi esimerkiksi muuttaa annettua arvoa tai hakea sen lajitteluavaimen jostakin. Tässä lajitteluavaimeksi annetaan listan alkio, josta isot kirjaimet muutetaan pieniksi ja josta poistetaan välit ja väliviivat. <syntaxhighlight lang="python"> >>> termit = [ "paikka-arvo", "paikkavaraus", "paikka paikoin", "Paikkala" ] >>> sorted(termit, key=lambda x: x.lower().replace(" ", "").replace("-", "")) ['paikka-arvo', 'Paikkala', 'paikka paikoin', 'paikkavaraus'] </syntaxhighlight> Lisäksi <tt>sorted</tt>-funktiolle voi antaa parametrin <tt>reverse=True</tt>, jos lista halutaan lajitella lopusta alkuun. <syntaxhighlight lang="python"> >>> sorted(termit, key=lambda x: x.lower().replace(" ", "").replace("-", ""), reverse=True) ['paikkavaraus', 'paikka paikoin', 'Paikkala', 'paikka-arvo'] </syntaxhighlight> == <tt>reduce</tt> == Pythonin aiemmassa versiossa sisäänrakennettu funktio <tt>reduce</tt> on Python 3:ssa siirretty <tt>functools</tt>-moduuliin, jossa on joitakin muitakin funktionaalisen ohjelmoinnin työkaluja. <tt>Reduce</tt> ottaa kolme argumenttia: kaksiparametrisen funktion, iteroitavissa olevan olion, kuten listan sekä valinnaisen alkuarvon, ja palauttaa yhden arvon, joka saadaan, kun annettua funktiota kutsutaan edellisellä tuloksella tai alkuarvolla ja listan alkiolla. Esimerkiksi kaikkien listan alkioiden summaus voitaisiin tehdä näin. Tässä ''acc'' on edellisen tulos (tai alkuarvo ensimmäisen kohdalla). <syntaxhighlight lang="python"> >>> from functools import reduce >>> reduce(lambda acc, x: acc + x, [1, 2, 3, 4, 5], 0) 15 </syntaxhighlight> Lauseke vastaa siis lauseketta (((1 + 2) + 3) + 4) + 5. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] rsrqlc8obxzntczj0rzfetcfqknvoze Python 3/Iteraattorit 0 19070 140389 140127 2022-08-23T05:33:21Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} Iteraattori on olio, joka antaa käydä läpi säiliöolion (kuten listan) sisältämät alkiot. Esimerkiksi, kun aiemmin käytimme <tt>for</tt>-silmukkaa, käytimme itseasiassa iteraattoria. Pythonissa iteraattori voi olla erillinen olio, joka antaa pääsyn isäntäolioon tai olio voi itse toimia omana iteraattorinaan. == Iteraattorin toteuttaminen == Olio tehdään iteroitavaksi toteuttamalla sille <tt>__iter__</tt>- ja <tt>__next__</tt>-metodit. <tt>__next__</tt> palauttaa olion alkiot yksi kerrallaan (tai muulla sopivalla tavalla) ja heittää virheen <tt>StopIteration</tt>, kun alkiot loppuvat. <tt>__iter__</tt>-metodi palauttaa olion iteraattorin. Jos olio on itse itsensä iteraattori, palauttaa se <tt>self</tt>. Esimerkiksi alla oleva olio palauttaa annetun päivämäärävälin päivät, kun sitä käytetään <tt>for</tt>-silmukassa. <syntaxhighlight lang="Python"> from datetime import date class PaivaIterator(object): """Iteraattori kaikkien päivien läpikäymiseen tietyltä väliltä. """ def __init__(self, alku, loppu): self.i_ord = alku.toordinal() self.loppu_ord = loppu.toordinal() def __iter__(self): return self def __next__(self): if self.i_ord == self.loppu_ord: raise StopIteration else: datestd = date.fromordinal(self.i_ord) self.i_ord += 1 return datestd if __name__ == "__main__": from datetime import timedelta import locale locale.setlocale(locale.LC_ALL, "fi_FI.UTF-8") alku = date.today() loppu = date.today() + timedelta(days=10) for d in PaivaIterator(alku, loppu): print(d.strftime('%a %x')) </syntaxhighlight> '''Tulostaa''' <pre> ti 12.07.2022 ke 13.07.2022 to 14.07.2022 pe 15.07.2022 la 16.07.2022 su 17.07.2022 ma 18.07.2022 ti 19.07.2022 ke 20.07.2022 to 21.07.2022 </pre> {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] 1qmda4kd91rv0cc5tqrnyg8vcxrb1ek Python 3/Operaattoreiden kuormittaminen 0 19071 140390 140156 2022-08-23T05:33:29Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} Operaattoreiden kuormittaminen tarkoittaa operandien väliin tai eteen laitettavien operaattoreiden, kuten <tt>+</tt>, <tt>-</tt>, <tt>*</tt>, <tt>/</tt>, toteuttamista omille luokille. Olemme jo nähneet miten operaattoria <tt>+</tt> voi käyttää paitsi numeroiden yhteenlaskuun myös yhdistämään kaksi listaa tai merkkijonoa ja operaattoreita <tt>*</tt> ja <tt>**</tt> voi käyttää paitsi kertolaskuun ja potensiin korottamiseen myös monikon ja sanakirjan hajottamiseen funktion argumenteiksi. Operaattori kuormitetaan toteuttamalla omassa oliossa erityinen metodi. {| class="wikitable" |+ Kuormitettavat operaattorit |- ! operaattori || metodi |- | <tt>+</tt> || <tt>__add__(self, other)</tt> |- | <tt>–</tt> || <tt>__sub__(self, other)</tt> |- | <tt>*</tt> || <tt>__mul__(self, other)</tt> |- | <tt>/</tt> || <tt>__truediv__(self, other)</tt> |- | <tt>//</tt> || <tt>__floordiv__(self, other)</tt> |- | <tt>%</tt> || <tt>__mod__(self, other)</tt> |- | <tt>**</tt> || <tt>__pow__(self, other)</tt> |- | <tt>@</tt> || <tt>__matmul__(self, other)</tt> |- | <tt>>></tt> || <tt>__rshift__(self, other)</tt> |- | <tt><<</tt> || <tt>__lshift__(self, other)</tt> |- | <tt>&</tt> || <tt>__and__(self, other)</tt> |- | <tt><nowiki>|</nowiki></tt> || <tt>__or__(self, other)</tt> |- | <tt>^</tt> || <tt>__xor__(self, other)</tt> |- | <tt><</tt> || <tt>__lt__(self, other)</tt> |- | <tt>></tt> || <tt>__gt__(self, other)</tt> |- | <tt><=</tt> || <tt>__le__(self, other)</tt> |- | <tt>>=</tt> || <tt>__ge__(self, other)</tt> |- | <tt>==</tt> || <tt>__eq__(self, other)</tt> |- | <tt>!=</tt> || <tt>__ne__(self, other)</tt> |- | <tt>–</tt> || <tt>__neg__(self)</tt> |- | <tt>+</tt> || <tt>__pos__(self)</tt> |- | <tt>~</tt> || <tt>__invert__(self)</tt> |- | <tt>in</tt> || <tt>__contains__(self, key)</tt> |- | <tt>+=</tt> || <tt>__iadd__(self, other)</tt> |- | <tt>-=</tt> || <tt>__isub__(self, other)</tt> |- | <tt>*=</tt> || <tt>__imul__(self, other)</tt> |- | <tt>/=</tt> || <tt>__itruediv__(self, other)</tt> |- | <tt>//=</tt> || <tt>__ifloordiv__(self, other)</tt> |- | <tt>%=</tt> || <tt>__imod__(self, other)</tt> |- | <tt>**=</tt> || <tt>__ipow__(self, other)</tt> |- | <tt>>>=</tt> || <tt>__irshift__(self, other)</tt> |- | <tt><<=</tt> || <tt>__ilshift__(self, other)</tt> |- | <tt>&=</tt> || <tt>__iand__(self, other)</tt> |- | <tt>|=</tt> || <tt>__ior__(self, other)</tt> |- | <tt>^=</tt> || <tt>__ixor__(self, other)</tt> |- |} Binaarisista operaattoresta on olemassa myös käänteinen versio, jossa nimen eteen tulee ''r''. Loogisia operaattoreita <tt>and</tt>, <tt>or</tt> ja <tt>not</tt> ei voi kuormittaa. == Esimerkki == Alla olevassa esimerkissä teemme kolmiarvoista totuusarvoa esittävän luokan, jossa ''tosi''- ja ''epätosi''-arvojen lisäksi on epätietoisuutta esittävä arvo (''?''). Koska <tt>and</tt>-, <tt>or</tt>- ja <tt>not</tt>-operaattoreita ei voi kuormittaa käytämme niiden sijasta <tt>&</tt>-, <tt><nowiki>|</nowiki></tt>- ja <tt>~</tt>-operaattoreita. Metodia <tt>__repr__</tt> käsiteltiin osassa [[../Luokka|Luokka]]. <syntaxhighlight lang="Python"> class tri: def __init__(self, val): self.__val = val @property def val(self): return self.__val def __and__(self, other): if self.val == "0" or other.val == "0": return tri("0") if self.val == "?" or other.val == "?": return tri("?") else: return tri("1") def __or__(self, other): if self.val == "1" or other.val == "1": return tri("1") elif self.val == "?" or other.val == "?": return tri("?") else: return tri("0") def __invert__(self): if self.val == "?": return tri("?") elif self.val == "1": return tri("0") else: return tri("1") def __repr__(self): return f"tri('{self.__val}')" if __name__ == "__main__": from itertools import combinations_with_replacement values = [tri("0"), tri("?"), tri("1")] pairs = [x for x in combinations_with_replacement(values, 2)] print(f"{'NOT': ^21}") for a in values: print("~", a, "=", ~a) print() print(f"{'AND': ^30}") for a, b in pairs: print(a, "&", b, "=", a & b) print() print(f"{'OR': ^30}") for a, b in pairs: print(a, "|", b, "=", a | b) </syntaxhighlight> '''Tulostaa''' <pre> NOT ~ tri('0') = tri('1') ~ tri('?') = tri('?') ~ tri('1') = tri('0') AND tri('0') & tri('0') = tri('0') tri('0') & tri('?') = tri('0') tri('0') & tri('1') = tri('0') tri('?') & tri('?') = tri('?') tri('?') & tri('1') = tri('?') tri('1') & tri('1') = tri('1') OR tri('0') | tri('0') = tri('0') tri('0') | tri('?') = tri('?') tri('0') | tri('1') = tri('1') tri('?') | tri('?') = tri('?') tri('?') | tri('1') = tri('1') tri('1') | tri('1') = tri('1') </pre> == Harjoitukset == # Tee murtolukua esittävä luokka ja toteuta sille ainakin operaattorit <tt>+</tt>, <tt>-</tt>, <tt>*</tt> ja <tt>/</tt>. Voit käyttä sieventämisessä apuna <tt>math</tt>-moduulin <tt>gcd</tt>-funktiota, joka palauttaa kahden annetun luvun suurimman yhteisen tekijän. Murtoluvuilla laskemista on käsitelty [[Matematiikka/Murto- ja sekaluvut|Matematiikan kirjassa]]. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] 5as2acibdelj7x1r45p9xdizxlvj46x 140393 140390 2022-08-23T05:35:29Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava+}} Operaattoreiden kuormittaminen tarkoittaa operandien väliin tai eteen laitettavien operaattoreiden, kuten <tt>+</tt>, <tt>-</tt>, <tt>*</tt>, <tt>/</tt>, toteuttamista omille luokille. Olemme jo nähneet miten operaattoria <tt>+</tt> voi käyttää paitsi numeroiden yhteenlaskuun myös yhdistämään kaksi listaa tai merkkijonoa ja operaattoreita <tt>*</tt> ja <tt>**</tt> voi käyttää paitsi kertolaskuun ja potensiin korottamiseen myös monikon ja sanakirjan hajottamiseen funktion argumenteiksi. Operaattori kuormitetaan toteuttamalla omassa oliossa erityinen metodi. {| class="wikitable" |+ Kuormitettavat operaattorit |- ! operaattori || metodi |- | <tt>+</tt> || <tt>__add__(self, other)</tt> |- | <tt>–</tt> || <tt>__sub__(self, other)</tt> |- | <tt>*</tt> || <tt>__mul__(self, other)</tt> |- | <tt>/</tt> || <tt>__truediv__(self, other)</tt> |- | <tt>//</tt> || <tt>__floordiv__(self, other)</tt> |- | <tt>%</tt> || <tt>__mod__(self, other)</tt> |- | <tt>**</tt> || <tt>__pow__(self, other)</tt> |- | <tt>@</tt> || <tt>__matmul__(self, other)</tt> |- | <tt>>></tt> || <tt>__rshift__(self, other)</tt> |- | <tt><<</tt> || <tt>__lshift__(self, other)</tt> |- | <tt>&</tt> || <tt>__and__(self, other)</tt> |- | <tt><nowiki>|</nowiki></tt> || <tt>__or__(self, other)</tt> |- | <tt>^</tt> || <tt>__xor__(self, other)</tt> |- | <tt><</tt> || <tt>__lt__(self, other)</tt> |- | <tt>></tt> || <tt>__gt__(self, other)</tt> |- | <tt><=</tt> || <tt>__le__(self, other)</tt> |- | <tt>>=</tt> || <tt>__ge__(self, other)</tt> |- | <tt>==</tt> || <tt>__eq__(self, other)</tt> |- | <tt>!=</tt> || <tt>__ne__(self, other)</tt> |- | <tt>–</tt> || <tt>__neg__(self)</tt> |- | <tt>+</tt> || <tt>__pos__(self)</tt> |- | <tt>~</tt> || <tt>__invert__(self)</tt> |- | <tt>in</tt> || <tt>__contains__(self, key)</tt> |- |} {| class="wikitable" |+ Kuormitettavat operaattorit |- ! operaattori || metodi |- | <tt>+=</tt> || <tt>__iadd__(self, other)</tt> |- | <tt>-=</tt> || <tt>__isub__(self, other)</tt> |- | <tt>*=</tt> || <tt>__imul__(self, other)</tt> |- | <tt>/=</tt> || <tt>__itruediv__(self, other)</tt> |- | <tt>//=</tt> || <tt>__ifloordiv__(self, other)</tt> |- | <tt>%=</tt> || <tt>__imod__(self, other)</tt> |- | <tt>**=</tt> || <tt>__ipow__(self, other)</tt> |- | <tt>>>=</tt> || <tt>__irshift__(self, other)</tt> |- | <tt><<=</tt> || <tt>__ilshift__(self, other)</tt> |- | <tt>&=</tt> || <tt>__iand__(self, other)</tt> |- | <tt>|=</tt> || <tt>__ior__(self, other)</tt> |- | <tt>^=</tt> || <tt>__ixor__(self, other)</tt> |- |} Binaarisista operaattoresta on olemassa myös käänteinen versio, jossa nimen eteen tulee ''r''. Loogisia operaattoreita <tt>and</tt>, <tt>or</tt> ja <tt>not</tt> ei voi kuormittaa. == Esimerkki == Alla olevassa esimerkissä teemme kolmiarvoista totuusarvoa esittävän luokan, jossa ''tosi''- ja ''epätosi''-arvojen lisäksi on epätietoisuutta esittävä arvo (''?''). Koska <tt>and</tt>-, <tt>or</tt>- ja <tt>not</tt>-operaattoreita ei voi kuormittaa käytämme niiden sijasta <tt>&</tt>-, <tt><nowiki>|</nowiki></tt>- ja <tt>~</tt>-operaattoreita. Metodia <tt>__repr__</tt> käsiteltiin osassa [[../Luokka|Luokka]]. <syntaxhighlight lang="Python"> class tri: def __init__(self, val): self.__val = val @property def val(self): return self.__val def __and__(self, other): if self.val == "0" or other.val == "0": return tri("0") if self.val == "?" or other.val == "?": return tri("?") else: return tri("1") def __or__(self, other): if self.val == "1" or other.val == "1": return tri("1") elif self.val == "?" or other.val == "?": return tri("?") else: return tri("0") def __invert__(self): if self.val == "?": return tri("?") elif self.val == "1": return tri("0") else: return tri("1") def __repr__(self): return f"tri('{self.__val}')" if __name__ == "__main__": from itertools import combinations_with_replacement values = [tri("0"), tri("?"), tri("1")] pairs = [x for x in combinations_with_replacement(values, 2)] print(f"{'NOT': ^21}") for a in values: print("~", a, "=", ~a) print() print(f"{'AND': ^30}") for a, b in pairs: print(a, "&", b, "=", a & b) print() print(f"{'OR': ^30}") for a, b in pairs: print(a, "|", b, "=", a | b) </syntaxhighlight> '''Tulostaa''' <pre> NOT ~ tri('0') = tri('1') ~ tri('?') = tri('?') ~ tri('1') = tri('0') AND tri('0') & tri('0') = tri('0') tri('0') & tri('?') = tri('0') tri('0') & tri('1') = tri('0') tri('?') & tri('?') = tri('?') tri('?') & tri('1') = tri('?') tri('1') & tri('1') = tri('1') OR tri('0') | tri('0') = tri('0') tri('0') | tri('?') = tri('?') tri('0') | tri('1') = tri('1') tri('?') | tri('?') = tri('?') tri('?') | tri('1') = tri('1') tri('1') | tri('1') = tri('1') </pre> == Harjoitukset == # Tee murtolukua esittävä luokka ja toteuta sille ainakin operaattorit <tt>+</tt>, <tt>-</tt>, <tt>*</tt> ja <tt>/</tt>. Voit käyttä sieventämisessä apuna <tt>math</tt>-moduulin <tt>gcd</tt>-funktiota, joka palauttaa kahden annetun luvun suurimman yhteisen tekijän. Murtoluvuilla laskemista on käsitelty [[Matematiikka/Murto- ja sekaluvut|Matematiikan kirjassa]]. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] mef4qy3svp41qpyvh8a1i3jc2enoo75 140394 140393 2022-08-23T05:50:05Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava+}} Operaattoreiden kuormittaminen tarkoittaa operandien väliin tai eteen laitettavien operaattoreiden, kuten <tt>+</tt>, <tt>-</tt>, <tt>*</tt>, <tt>/</tt>, toteuttamista omille luokille. Olemme jo nähneet miten operaattoria <tt>+</tt> voi käyttää paitsi numeroiden yhteenlaskuun myös yhdistämään kaksi listaa tai merkkijonoa ja operaattoreita <tt>*</tt> ja <tt>**</tt> voi käyttää paitsi kertolaskuun ja potensiin korottamiseen myös monikon ja sanakirjan hajottamiseen funktion argumenteiksi. Operaattori kuormitetaan toteuttamalla omassa oliossa erityinen metodi. {| class="wikitable" |+ Kuormitettavat operaattorit |- ! operaattori || metodi |- | <tt>+</tt> || <tt>__add__(self, other)</tt> |- | <tt>–</tt> || <tt>__sub__(self, other)</tt> |- | <tt>*</tt> || <tt>__mul__(self, other)</tt> |- | <tt>/</tt> || <tt>__truediv__(self, other)</tt> |- | <tt>//</tt> || <tt>__floordiv__(self, other)</tt> |- | <tt>%</tt> || <tt>__mod__(self, other)</tt> |- | <tt>**</tt> || <tt>__pow__(self, other)</tt> |- | <tt>@</tt> || <tt>__matmul__(self, other)</tt> |- | <tt>>></tt> || <tt>__rshift__(self, other)</tt> |- | <tt><<</tt> || <tt>__lshift__(self, other)</tt> |- | <tt>&</tt> || <tt>__and__(self, other)</tt> |- | <tt><nowiki>|</nowiki></tt> || <tt>__or__(self, other)</tt> |- | <tt>^</tt> || <tt>__xor__(self, other)</tt> |- | <tt><</tt> || <tt>__lt__(self, other)</tt> |- | <tt>></tt> || <tt>__gt__(self, other)</tt> |- | <tt><=</tt> || <tt>__le__(self, other)</tt> |- | <tt>>=</tt> || <tt>__ge__(self, other)</tt> |- | <tt>==</tt> || <tt>__eq__(self, other)</tt> |- | <tt>!=</tt> || <tt>__ne__(self, other)</tt> |- | <tt>–</tt> || <tt>__neg__(self)</tt> |- | <tt>+</tt> || <tt>__pos__(self)</tt> |- | <tt>~</tt> || <tt>__invert__(self)</tt> |- | <tt>in</tt> || <tt>__contains__(self, key)</tt> |- |} {| class="wikitable" |+ Kuormitettavat operaattorit |- ! operaattori || metodi |- | <tt>+=</tt> || <tt>__iadd__(self, other)</tt> |- | <tt>-=</tt> || <tt>__isub__(self, other)</tt> |- | <tt>*=</tt> || <tt>__imul__(self, other)</tt> |- | <tt>/=</tt> || <tt>__itruediv__(self, other)</tt> |- | <tt>//=</tt> || <tt>__ifloordiv__(self, other)</tt> |- | <tt>%=</tt> || <tt>__imod__(self, other)</tt> |- | <tt>**=</tt> || <tt>__ipow__(self, other)</tt> |- | <tt>>>=</tt> || <tt>__irshift__(self, other)</tt> |- | <tt><<=</tt> || <tt>__ilshift__(self, other)</tt> |- | <tt>&=</tt> || <tt>__iand__(self, other)</tt> |- | <tt>|=</tt> || <tt>__ior__(self, other)</tt> |- | <tt>^=</tt> || <tt>__ixor__(self, other)</tt> |- |} Binaarisista operaattoresta on olemassa myös käänteinen versio, jossa nimen eteen tulee ''r''. Loogisia operaattoreita <tt>and</tt>, <tt>or</tt> ja <tt>not</tt> ei voi kuormittaa. == Esimerkki vertailuoperaattoreiden kuormittamisesta == Tässä teemme tyypin <tt>kps</tt>, jolla voi esittää kivi–paperi–sakset-leikin arvoja ja vertailla niitä keskenään. <syntaxhighlight lang="Python"> class kps: def __init__(self, val): self.val = val def __eq__(self, other): return (self.val == other.val) def __gt__(self, other): if self.val == "paperi" and other.val == "kivi": return True if self.val == "sakset" and other.val == "paperi": return True if self.val == "kivi" and other.val == "sakset": return True return False def __ge__(self, other): return self.__eq__(other) or self.__gt__(other) def __lt__(self, other): if self.val == "kivi" and other.val == "paperi": return True if self.val == "paperi" and other.val == "sakset": return True if self.val == "sakset" and other.val == "kivi": return True return False def __le__(self, other): return self.__eq__(other) or self.__lt__(other) def __repr__(self): return f'{self.val}' kivi = kps("kivi") paperi = kps("paperi") sakset = kps("sakset") if __name__ == "__main__": from itertools import combinations_with_replacement units = [kivi, paperi, sakset] pairs = [x for x in combinations_with_replacement(units, 2)] print("==") for pair in pairs: a = pair[0] b = pair[1] print(a, "==", b) print(a == b) print() print("!=") for pair in pairs: a = pair[0] b = pair[1] print(a, "!=", b) print(a != b) print() print(">") for pair in pairs: a = pair[0] b = pair[1] print(a, ">", b) print(a > b) print() print("<") for pair in pairs: a = pair[0] b = pair[1] print(a, "<", b) print(a < b) print() print(">=") for pair in pairs: a = pair[0] b = pair[1] print(a, ">=", b) print(a >= b) print() print("<=") for pair in pairs: a = pair[0] b = pair[1] print(a, "<=", b) print(a <= b) print() </syntaxhighlight> '''Tulostaa''' <pre> == kivi == kivi True kivi == paperi False kivi == sakset False paperi == paperi True paperi == sakset False sakset == sakset True != kivi != kivi False kivi != paperi True kivi != sakset True paperi != paperi False paperi != sakset True sakset != sakset False > kivi > kivi False kivi > paperi False kivi > sakset True paperi > paperi False paperi > sakset False sakset > sakset False < kivi < kivi False kivi < paperi True kivi < sakset False paperi < paperi False paperi < sakset True sakset < sakset False >= kivi >= kivi True kivi >= paperi False kivi >= sakset True paperi >= paperi True paperi >= sakset False sakset >= sakset True <= kivi <= kivi True kivi <= paperi True kivi <= sakset False paperi <= paperi True paperi <= sakset True sakset <= sakset True </pre> == Esimerkki bittioperaatoiden kuormittamisesta == Alla olevassa esimerkissä teemme kolmiarvoista totuusarvoa esittävän luokan, jossa ''tosi''- ja ''epätosi''-arvojen lisäksi on epätietoisuutta esittävä arvo (''?''). Koska <tt>and</tt>-, <tt>or</tt>- ja <tt>not</tt>-operaattoreita ei voi kuormittaa käytämme niiden sijasta <tt>&</tt>-, <tt><nowiki>|</nowiki></tt>- ja <tt>~</tt>-operaattoreita. Metodia <tt>__repr__</tt> käsiteltiin osassa [[../Luokka|Luokka]]. <syntaxhighlight lang="Python"> class tri: def __init__(self, val): self.__val = val @property def val(self): return self.__val def __and__(self, other): if self.val == "0" or other.val == "0": return tri("0") if self.val == "?" or other.val == "?": return tri("?") else: return tri("1") def __or__(self, other): if self.val == "1" or other.val == "1": return tri("1") elif self.val == "?" or other.val == "?": return tri("?") else: return tri("0") def __invert__(self): if self.val == "?": return tri("?") elif self.val == "1": return tri("0") else: return tri("1") def __repr__(self): return f"tri('{self.__val}')" if __name__ == "__main__": from itertools import combinations_with_replacement values = [tri("0"), tri("?"), tri("1")] pairs = [x for x in combinations_with_replacement(values, 2)] print(f"{'NOT': ^21}") for a in values: print("~", a, "=", ~a) print() print(f"{'AND': ^30}") for a, b in pairs: print(a, "&", b, "=", a & b) print() print(f"{'OR': ^30}") for a, b in pairs: print(a, "|", b, "=", a | b) </syntaxhighlight> '''Tulostaa''' <pre> NOT ~ tri('0') = tri('1') ~ tri('?') = tri('?') ~ tri('1') = tri('0') AND tri('0') & tri('0') = tri('0') tri('0') & tri('?') = tri('0') tri('0') & tri('1') = tri('0') tri('?') & tri('?') = tri('?') tri('?') & tri('1') = tri('?') tri('1') & tri('1') = tri('1') OR tri('0') | tri('0') = tri('0') tri('0') | tri('?') = tri('?') tri('0') | tri('1') = tri('1') tri('?') | tri('?') = tri('?') tri('?') | tri('1') = tri('1') tri('1') | tri('1') = tri('1') </pre> == Harjoitukset == # Tee murtolukua esittävä luokka ja toteuta sille ainakin operaattorit <tt>+</tt>, <tt>-</tt>, <tt>*</tt> ja <tt>/</tt>. Voit käyttä sieventämisessä apuna <tt>math</tt>-moduulin <tt>gcd</tt>-funktiota, joka palauttaa kahden annetun luvun suurimman yhteisen tekijän. Murtoluvuilla laskemista on käsitelty [[Matematiikka/Murto- ja sekaluvut|Matematiikan kirjassa]]. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] 093vz8qm63v00hjcps3sdi1k89c24n0 Python 3/Kontekstimanageri 0 19075 140391 140209 2022-08-23T05:33:37Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} Kontekstimanageri (''context manager'') on olio, joka avaa ja sulkee jonkin resurssin hallitusti. Yhteen kontekstimanageriin tutustuttiin jo [[../Tiedosto|tiedostojen]] käsittelyn yhteydessä. Kontekstimanageri avaa resurssin lohkon alussa ja sulkee sen aina lohkosta poistuttaessa tapahtui poistuminen miten tahansa (lohkon loputtua, <tt>return</tt>-, <tt>break</tt>- tai <tt>continue</tt>-lauseella tai virheen sattuessa). Konteksti avataan <tt>with</tt>-avainsanalla ja sen palauttama arvo asetetaan muuttujaan <tt>as</tt>-avainsanalla. Oliota voidaan käyttää kontekstimanagerina, jos se toteuttaa metodit <tt>__enter__(self)</tt> ja <tt>__exit__(self, type, value, traceback)</tt>. == Esimerkki == Alla olevassa esimerkissä kirjaudutaan sisään johonkin palveluun, palvelua käytetään lohkon sisällä ja lopuksi kirjaudutaan ulos. <syntaxhighlight lang="Python"> class ApiSessio: def __init__(self, käyttäjätunnus, salasana): self.käyttäjätunnus = käyttäjätunnus self.salasana = salasana def __enter__(self): print(f"[ApiSessio] Käyttäjä ’{self.käyttäjätunnus}’ kirjautuu salasanalla ’{self.salasana}’") return self def __exit__(self, type, value, traceback): print(f"[ApiSessio] Käyttäjä ’{self.käyttäjätunnus}’ kirjautuu ulos") def hae_tieto(self): return "Palvelusta haettu tieto" if __name__ == "__main__": with ApiSessio('käyttäjä1', 'salasana22!') as sessio: print(sessio.hae_tieto()) </syntaxhighlight> '''Tulostaa''' <pre> [ApiSessio] käyttäjä ’käyttäjä1’ kirjautuu salasanalla ’salasana22!’ Palvelusta haettu tieto [ApiSessio] Käyttäjä ’käyttäjä1’ kirjautuu ulos </pre> Jos lohkon sisällä nyt tapahtuisi odottamaton virhe, kirjauduttaisiin silti ulos. <pre> [ApiSessio] käyttäjä ’käyttäjä1’ kirjautuu salasanalla ’salasana22!’ [ApiSessio] Käyttäjä ’käyttäjä1’ kirjautuu ulos Traceback (most recent call last): ... Exception: Tapahtui virhe </pre> == Harjoitukset == {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] e185z9n31738nf6wzmbavfuhpuvauo7 Python 3/Generaattorifunktiot 0 19076 140388 140222 2022-08-23T05:33:13Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} Generaattorifunktioksi sanotaan funktiota, joka palauttaa generaattorinolion. Kun <tt>next</tt>-funktiota kutsutaan palautetulla generaattorioliolla, palauttaa se aina uuden arvon. Tällaista oliota vi käyttää <tt>for</tt>-silmukassa iteraattorina, sillä <tt>for</tt> kutsuu sisäisesti <tt>next</tt>funktiota oliolle. Generaattori voi palauttaa loputtomasti uusia arvoja tai se voi palauttaa niitä tietyn määrän. Arvot lasketaan vasta niitä pyydettäessä ns. laiskasti. Generaattorifunktio toimii siten, että siitä palautetaan arvo <tt>yield</tt>-komennolla. Funktion suoritus keskeytetään tähän kohtaan. Seuraavalla <tt>next</tt>-komennolla suoritusta jatketaan kohdan jälkeen. Generaattorin suoritus loppuu, kun päästään funktion loppuun tai siitä palataan <tt>return</tt>-sanalla. Esimerkiksi muutamme [[Python 3/for-silmukka|<tt>for</tt>-silmukkaa]] käsittelevässä osassa olevan, kymmenen ensimmäistä Fibonaccin lukua laskevan silmukan luvut yksi kerrallaan palauttavaksi generaattorifunktioksi. <syntaxhighlight lang="python"> def fibonacci(max_n): a = 1 b = 1 for _ in range(0, max_n): yield a # a palautetaan n = a + b a = b b = n </syntaxhighlight> Aina kun <tt>for</tt>-silmukassa tullaan <tt>yield</tt>-komentoon, palautetaan <tt>a</tt>. Seuraavalla kerralla suoritus jatkuu <tt>yield</tt>-komennon jälkeisestä rivistä. Nyt muussa koodissa voidaan käydä läpi haluttu määrä Fibonaccin lukuja yksinkertaisesti. <syntaxhighlight lang="python"> for num in fibonacci(10): print(num) </syntaxhighlight> == Rajaton generaattorifunktio == Koska generaattorifunktio laskee seuraavan arvon vasta sitä tarvittaessa, voidaan niitä käyttää hvyin silloin, kun yläraja ei ole etukäteen tiedossa. Silloin kutsuvassa koodissa pitää olla jokin lopetusehto. Muuten ohjelma ei pääty koskaan. Fibonaccin lukuja generoiva funktio voitaisiin muuttaa ylärajattomaksi tekemällä silmukasta ikuinen silmukka. <syntaxhighlight lang="python"> def fibonacci4ever(): a = 1 b = 1 while True: yield a n = a + b a = b b = n </syntaxhighlight> Nyt kutsuva koodi voisi esimerkiksi tulostaa kaikki 500 pienemmät Fibonaccin luvut. <syntaxhighlight lang="python"> for num in fibonacci4ever(): if num > 500: break print(num) </syntaxhighlight> {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] b2s60kocz97gptbz9zmxrf2smnktabh Python 3/Interaktiivinen Python-tulkki 0 19085 140376 140335 2022-08-23T05:28:07Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} Python-tulkin voi käynnistää käyttöjärjestelmän komentotolkista komennolla <syntaxhighlight lang="bash"> $ python3 </syntaxhighlight> tai, jos halutaan lukea tai suorittaa tiedosto ensin ja sen jälkeen jatkaa interaktiivisesti Python-tulkissa <syntaxhighlight lang="bash"> $ python3 -i tiedosto.py </syntaxhighlight> Interaktiiviseen tulkkiin voi kirjoittaa komentoja, jotka tulkki toteuttaa saman tien ja tulostaa tuloksen. Komentotulkkiin kirjoitettu Python-koodi aloitetaan tässä oppaassa aina kolmella kulmasulkeella (>) tai kolmella pisteellä (.), jos monirivinen komento jatkuu. Tulkin vastaus tulee näiden jälkeen ilman etumerkkejä. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> if 3 + 1 == 4: ... print("Hello world") ... Hello world! </syntaxhighlight> Edellisen komennon tuloksen saa käyttöön muuttujan _ (alaviiva) kautta. <syntaxhighlight lang="Python"> >>> 3 + 1 4 >>> _ * 2 8 </syntaxhighlight> Huomaa, että tämä on komentotulkin ominaisuus. Ajettavassa Python-ohjelmassa muuttuja _ ei ole käytössä. Tulkkiin voi tuoda moduuleita <tt>import</tt>-lauseella samalla tavalla kuin ohjelmissakin. <syntaxhighlight lang="Python"> >>> import datetime >>> datetime.date.today() datetime.date(2022, 8, 22) </syntaxhighlight> Perustulkin lisäksi on olemassa myös muita lisäominaisuuksia sisältäviä Python-tulkkeja kuten IPython ja selaimessa käytettävä työkirja Jupyter Notebook. Verkossa on monia selaimessa käytettäviä Python-tulkkeja, esimerkiksi [https://www.python.org/shell/ www.python.org/shell/]. == <tt>Help</tt>-funktio == Lausekkeen ohjeen saa avattua <tt>help</tt>-funktiolla. Help-funktiolle annetaan parametriksi kohde, jonka ohje halutaan nähdä. Kohde voi olla mikä tahansa Python-olio esimerkiksi funktio, olio, muuttuja tai moduuli. Esimerkiksi <tt>sum</tt>-funktion ohje: <syntaxhighlight lang="Python"> >>> help(sum) </syntaxhighlight> <pre> Help on built-in function sum in module builtins: sum(iterable, /, start=0) Return the sum of a 'start' value (default: 0) plus an iterable of numbers When the iterable is empty, return the start value. This function is intended specifically for use with numeric values and may reject non-numeric types. </pre> Jos <tt>help</tt>-funktion parametrissa on lauseke, näytetään ohje lausekkeen tuloksena saadulle oliolle. Siten ohjeen saa näytettyä myös vaikka et tietäisi olion nimeä. Esimerkiksi, jos haluamme nähdä mitä voimme tehdä <tt>re.match</tt>-funktion palauttamalla arvolla tietämättä sen nimeä. (Moduulissa <tt>re</tt> on säännöllisten lausekkeiden käsittelyyn tarkoitettuja funktiota.) <syntaxhighlight lang="Python"> >>> import re >>> m = re.match(r"[a-z]+[0-9]+", "sana12") >>> help(m) </syntaxhighlight> <pre> Help on Match object: class Match(builtins.object) | The result of re.match() and re.search(). | Match objects always have a boolean value of True. | | Methods defined here: | | __copy__(self, /) | | __deepcopy__(self, memo, /) | | __getitem__(self, key, /) | Return self[key]. – – </pre> <tt>Help</tt>-funktiolla näkee myös omien funktioiden ja olioiden ohjeet, jos niihin on liitetty ohjeteksti. Ohjetekstin lisäämistä käsitellään osassa {{Aliosiolinkki|Python 3|Luokka|Ohjeteksti}}. == Muita funktioita == Toinen hyödyllinen funktio tutkittaessa ympäristössä olevia oliota on <tt>dir</tt>, joka palauttaa kaikki olion jäsenet listana. <syntaxhighlight lang="Python"> >>> dir(m) ['__class__', '__class_getitem__', '__copy__', '__deepcopy__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'end', 'endpos', 'expand', 'group', 'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs', 'span', 'start', 'string'] </syntaxhighlight> Funktiolla <tt>type</tt> näkee parametrina annetun olion tyypin. <syntaxhighlight lang="Python"> >>> type(m.group) <class 'builtin_function_or_method'> >>> type(m.pos) <class 'int'> </syntaxhighlight> {{Python 3}} l5vwr4drluqyigvm6frd461simebbo8 Python 3/Komentoriviargumentit 0 19087 140384 140337 2022-08-23T05:32:36Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava+}} Komentoriviargumenteilla voi antaa ohjelmalle tietoja sen käynnistyksen yhteydessä. Argumentit kirjoitetaan ohjelman kutsun perään. <syntaxhighlight lang="Bash"> $ python ohjelma.py parametri1 2 "monisanainen kolmas parametri" </syntaxhighlight> == <tt>sys.argv</tt> == Komentoriviargumentteihin pääsee käsiksi <tt>sys</tt>-moduulin <tt>argv</tt>-taulukosta. <syntaxhighlight lang="Python"> import sys print(sys.argv) </syntaxhighlight> '''Tulostaa''' <pre> ['ohjelma.py', 'parametri1', '2', 'monisanainen kolmas parametri'] </pre> Huomaa, että taulukon ensimmäinen alkio on ohjelmatiedoston nimi. Kaikki komentoriviltä saadut argumentit ovat <tt>str</tt>-tyyppisiä. Ne pitää tarvittaessa muuttaa sopivaksi tyypiksi ennen käyttöä. <tt>Sys.argv</tt> sopii yksinkertaisiin skripteihin. Monimutkaisempiin ohjelmiin kannattaa käyttää jotakin kirjastoa komentoriviparametrien käsittelyyn, esimerkiksi <tt>argparse</tt>-kirjastoa. {{Python 3}} 6c5h72svo3cnt4kpfcjzti95ge6kqk2 Python 3/Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla 0 19088 140351 140347 2022-08-22T12:58:37Z Hunsvotti 6338 /* Generaattorin alkioiden kuvailu */ wikitext text/x-wiki {{Edellinen-seuraava||}} == Listan alkioiden määrittely kuvailemalla == Listan voi määritellä paitsi luettelemalla sen alkiot, myös kuvailemalla listaan kuuluvat alkiot lausekkella (''list comprehension''). Listan kuvailun muoto on <pre> '[' alkion-laskeva-lauseke 'for' alkio 'in' lista... [if-lauseke]... ']' </pre> jossa for- ja if-lausekkeita voi olla useita. Minimiesimerkki, joka ei tee muuta kuin kopioi annetun listan. Tämä vastaa <code>list</code>-funktion käyttämistä. <syntaxhighlight lang="Python"> >>> [alkio for alkio in [1, 2, 3]] [1, 2, 3] </syntaxhighlight> ''Alkion-laskeva-lauseke''-osasa voi alkioille tehdä jonkin operaation ennen niiden lisäämistä uuteen listaan. <syntaxhighlight lang="Python"> >>> [alkio ** 2 for alkio in [1, 2, 3]] [1, 4, 9] >>> ["parillinen" if alkio % 2 == 0 else "pariton" for alkio in range(0, 10)] ['parillinen', 'pariton', 'parillinen', 'pariton', 'parillinen', 'pariton', 'parillinen', 'pariton', 'parillinen', 'pariton'] </syntaxhighlight> For-lausekkeita voi olla useita. Tällöin lauseke laskee kaikki for-lausekkeiden palauttamine arvojen yhdistelmät. <syntaxhighlight lang="Python"> >>> luvut = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> [a * b for a in luvut for b in luvut] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] </syntaxhighlight> Useamman for-lausekkeen käyttö vastaa sisäkkäisiä for-lausekkeita. Yllä oleva koodi siis vastaa listan luomista näin. <syntaxhighlight lang="Python"> tulokset = [] for a in luvut: for b in luvut: tulokset.append(a * b) </syntaxhighlight> If-lausekkeella voi alkioita lisätä ehdollisesti. <syntaxhighlight lang="Python"> >>> [alkio for alkio in range(0, 10) if alkio % 2 == 0] [0, 2, 4, 6, 8] </syntaxhighlight> If-lausekkeita voi olla useampia. Ne vastaavat silloin sisäkkäisiä if-lauseita. <syntaxhighlight lang="Python"> >>> [alkio for alkio in range(0, 100) if alkio % 2 == 0 if alkio % 3 == 0] [0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96] >>> [x*y for x in range(1, 11) if x % 3 == 0 for y in range(1, 11) if y % 2 == 0] [6, 12, 18, 24, 30, 12, 24, 36, 48, 60, 18, 36, 54, 72, 90] </syntaxhighlight> == Sanakirjan alkioiden kuvailu == Sanakirjan alkiot voi kuvailla vastaavalla tavalla kuin listan. Erona on, että hakasulkeiden tilalla käytetään aaltosulkeita ja ''alkion-laskeva-lauseke''-osaan kirjoitetaan avain ja arvo kaksoispisteellä erotettuna. <syntaxhighlight lang="Python"> >>> { 'luku' + str(n) : n for n in range(0, 10) } {'luku0': 0, 'luku1': 1, 'luku2': 2, 'luku3': 3, 'luku4': 4, 'luku5': 5, 'luku6': 6, 'luku7': 7, 'luku8': 8, 'luku9': 9} </syntaxhighlight> == Joukon alkioiden kuvailu == Joukon alkiot voi kuvailla vastaavalla tavalla kuin listan. Erona on, että hakasulkeiden tilalla käytetään aaltosulkeita. <syntaxhighlight lang="Python"> >>> luvut = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> {a * b for a in luvut for b in luvut} {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, 28, 30, 32, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72, 80, 81, 90, 100} </syntaxhighlight> == Generaattorin alkioiden kuvailu == Generaattorin alkiot voi kuvailla vastaavalla tavalla kuin listan. Erona on, että hakasulkeiden tilalla käytetään kaarisulkeita. Generaattori toimii kuten lista, mutta alkioita ei luoda muistiin generaattori luotaessa vaan yksi kerrallaan generaattoria kutsuttaessa, joten generaattorin käyttäminen on tehokkaampaa, jos alkioita tarvitaan vain yksi kerrallaan. <syntaxhighlight lang="Python"> >>> for val in (alkio ** 2 for alkio in range(10)): ... print(val) ... 0 1 4 9 16 25 36 49 64 81 </syntaxhighlight> {{Python 3}} qgsy2hj0bax0zvw8ggc5bl7qrsfwp6u 140352 140351 2022-08-22T12:59:02Z Hunsvotti 6338 /* Generaattorin alkioiden kuvailu */ wikitext text/x-wiki {{Edellinen-seuraava||}} == Listan alkioiden määrittely kuvailemalla == Listan voi määritellä paitsi luettelemalla sen alkiot, myös kuvailemalla listaan kuuluvat alkiot lausekkella (''list comprehension''). Listan kuvailun muoto on <pre> '[' alkion-laskeva-lauseke 'for' alkio 'in' lista... [if-lauseke]... ']' </pre> jossa for- ja if-lausekkeita voi olla useita. Minimiesimerkki, joka ei tee muuta kuin kopioi annetun listan. Tämä vastaa <code>list</code>-funktion käyttämistä. <syntaxhighlight lang="Python"> >>> [alkio for alkio in [1, 2, 3]] [1, 2, 3] </syntaxhighlight> ''Alkion-laskeva-lauseke''-osasa voi alkioille tehdä jonkin operaation ennen niiden lisäämistä uuteen listaan. <syntaxhighlight lang="Python"> >>> [alkio ** 2 for alkio in [1, 2, 3]] [1, 4, 9] >>> ["parillinen" if alkio % 2 == 0 else "pariton" for alkio in range(0, 10)] ['parillinen', 'pariton', 'parillinen', 'pariton', 'parillinen', 'pariton', 'parillinen', 'pariton', 'parillinen', 'pariton'] </syntaxhighlight> For-lausekkeita voi olla useita. Tällöin lauseke laskee kaikki for-lausekkeiden palauttamine arvojen yhdistelmät. <syntaxhighlight lang="Python"> >>> luvut = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> [a * b for a in luvut for b in luvut] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] </syntaxhighlight> Useamman for-lausekkeen käyttö vastaa sisäkkäisiä for-lausekkeita. Yllä oleva koodi siis vastaa listan luomista näin. <syntaxhighlight lang="Python"> tulokset = [] for a in luvut: for b in luvut: tulokset.append(a * b) </syntaxhighlight> If-lausekkeella voi alkioita lisätä ehdollisesti. <syntaxhighlight lang="Python"> >>> [alkio for alkio in range(0, 10) if alkio % 2 == 0] [0, 2, 4, 6, 8] </syntaxhighlight> If-lausekkeita voi olla useampia. Ne vastaavat silloin sisäkkäisiä if-lauseita. <syntaxhighlight lang="Python"> >>> [alkio for alkio in range(0, 100) if alkio % 2 == 0 if alkio % 3 == 0] [0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96] >>> [x*y for x in range(1, 11) if x % 3 == 0 for y in range(1, 11) if y % 2 == 0] [6, 12, 18, 24, 30, 12, 24, 36, 48, 60, 18, 36, 54, 72, 90] </syntaxhighlight> == Sanakirjan alkioiden kuvailu == Sanakirjan alkiot voi kuvailla vastaavalla tavalla kuin listan. Erona on, että hakasulkeiden tilalla käytetään aaltosulkeita ja ''alkion-laskeva-lauseke''-osaan kirjoitetaan avain ja arvo kaksoispisteellä erotettuna. <syntaxhighlight lang="Python"> >>> { 'luku' + str(n) : n for n in range(0, 10) } {'luku0': 0, 'luku1': 1, 'luku2': 2, 'luku3': 3, 'luku4': 4, 'luku5': 5, 'luku6': 6, 'luku7': 7, 'luku8': 8, 'luku9': 9} </syntaxhighlight> == Joukon alkioiden kuvailu == Joukon alkiot voi kuvailla vastaavalla tavalla kuin listan. Erona on, että hakasulkeiden tilalla käytetään aaltosulkeita. <syntaxhighlight lang="Python"> >>> luvut = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> {a * b for a in luvut for b in luvut} {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, 28, 30, 32, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72, 80, 81, 90, 100} </syntaxhighlight> == Generaattorin alkioiden kuvailu == Generaattorin alkiot voi kuvailla vastaavalla tavalla kuin listan. Erona on, että hakasulkeiden tilalla käytetään kaarisulkeita. <syntaxhighlight lang="Python"> >>> for val in (alkio ** 2 for alkio in range(10)): ... print(val) ... 0 1 4 9 16 25 36 49 64 81 </syntaxhighlight> Generaattori toimii kuten lista, mutta alkioita ei luoda muistiin generaattori luotaessa vaan yksi kerrallaan generaattoria kutsuttaessa, joten generaattorin käyttäminen on tehokkaampaa, jos alkioita tarvitaan vain yksi kerrallaan. {{Python 3}} 6eyfvyldikhlrieyb9wumb540irphna 140385 140352 2022-08-23T05:32:45Z Hunsvotti 6338 {{Edellinen-seuraava+}} wikitext text/x-wiki {{Edellinen-seuraava+}} == Listan alkioiden määrittely kuvailemalla == Listan voi määritellä paitsi luettelemalla sen alkiot, myös kuvailemalla listaan kuuluvat alkiot lausekkella (''list comprehension''). Listan kuvailun muoto on <pre> '[' alkion-laskeva-lauseke 'for' alkio 'in' lista... [if-lauseke]... ']' </pre> jossa for- ja if-lausekkeita voi olla useita. Minimiesimerkki, joka ei tee muuta kuin kopioi annetun listan. Tämä vastaa <code>list</code>-funktion käyttämistä. <syntaxhighlight lang="Python"> >>> [alkio for alkio in [1, 2, 3]] [1, 2, 3] </syntaxhighlight> ''Alkion-laskeva-lauseke''-osasa voi alkioille tehdä jonkin operaation ennen niiden lisäämistä uuteen listaan. <syntaxhighlight lang="Python"> >>> [alkio ** 2 for alkio in [1, 2, 3]] [1, 4, 9] >>> ["parillinen" if alkio % 2 == 0 else "pariton" for alkio in range(0, 10)] ['parillinen', 'pariton', 'parillinen', 'pariton', 'parillinen', 'pariton', 'parillinen', 'pariton', 'parillinen', 'pariton'] </syntaxhighlight> For-lausekkeita voi olla useita. Tällöin lauseke laskee kaikki for-lausekkeiden palauttamine arvojen yhdistelmät. <syntaxhighlight lang="Python"> >>> luvut = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> [a * b for a in luvut for b in luvut] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] </syntaxhighlight> Useamman for-lausekkeen käyttö vastaa sisäkkäisiä for-lausekkeita. Yllä oleva koodi siis vastaa listan luomista näin. <syntaxhighlight lang="Python"> tulokset = [] for a in luvut: for b in luvut: tulokset.append(a * b) </syntaxhighlight> If-lausekkeella voi alkioita lisätä ehdollisesti. <syntaxhighlight lang="Python"> >>> [alkio for alkio in range(0, 10) if alkio % 2 == 0] [0, 2, 4, 6, 8] </syntaxhighlight> If-lausekkeita voi olla useampia. Ne vastaavat silloin sisäkkäisiä if-lauseita. <syntaxhighlight lang="Python"> >>> [alkio for alkio in range(0, 100) if alkio % 2 == 0 if alkio % 3 == 0] [0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96] >>> [x*y for x in range(1, 11) if x % 3 == 0 for y in range(1, 11) if y % 2 == 0] [6, 12, 18, 24, 30, 12, 24, 36, 48, 60, 18, 36, 54, 72, 90] </syntaxhighlight> == Sanakirjan alkioiden kuvailu == Sanakirjan alkiot voi kuvailla vastaavalla tavalla kuin listan. Erona on, että hakasulkeiden tilalla käytetään aaltosulkeita ja ''alkion-laskeva-lauseke''-osaan kirjoitetaan avain ja arvo kaksoispisteellä erotettuna. <syntaxhighlight lang="Python"> >>> { 'luku' + str(n) : n for n in range(0, 10) } {'luku0': 0, 'luku1': 1, 'luku2': 2, 'luku3': 3, 'luku4': 4, 'luku5': 5, 'luku6': 6, 'luku7': 7, 'luku8': 8, 'luku9': 9} </syntaxhighlight> == Joukon alkioiden kuvailu == Joukon alkiot voi kuvailla vastaavalla tavalla kuin listan. Erona on, että hakasulkeiden tilalla käytetään aaltosulkeita. <syntaxhighlight lang="Python"> >>> luvut = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> {a * b for a in luvut for b in luvut} {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, 28, 30, 32, 35, 36, 40, 42, 45, 48, 49, 50, 54, 56, 60, 63, 64, 70, 72, 80, 81, 90, 100} </syntaxhighlight> == Generaattorin alkioiden kuvailu == Generaattorin alkiot voi kuvailla vastaavalla tavalla kuin listan. Erona on, että hakasulkeiden tilalla käytetään kaarisulkeita. <syntaxhighlight lang="Python"> >>> for val in (alkio ** 2 for alkio in range(10)): ... print(val) ... 0 1 4 9 16 25 36 49 64 81 </syntaxhighlight> Generaattori toimii kuten lista, mutta alkioita ei luoda muistiin generaattori luotaessa vaan yksi kerrallaan generaattoria kutsuttaessa, joten generaattorin käyttäminen on tehokkaampaa, jos alkioita tarvitaan vain yksi kerrallaan. {{Python 3}} h7e6h7dmf8nbre2mc2n8hoxtkgil74x Python 3/Pakkaus 0 19089 140354 2022-08-22T13:32:52Z Hunsvotti 6338 Ak: Uusi sivu: {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. == Pakkausten hallintasovellukset == == Virtuaaliympäristöt == Virtuaaliympäristöä tarvitaan, kun sovellus tarvitsee tietyn version kirjastosta. Jos yksi sovellus tarvitsee tietyn vers... wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. == Pakkausten hallintasovellukset == == Virtuaaliympäristöt == Virtuaaliympäristöä tarvitaan, kun sovellus tarvitsee tietyn version kirjastosta. Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain ympäristöön. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] jbjwe1x71aayh6k8903irwf9s2647ip 140355 140354 2022-08-22T13:39:18Z Hunsvotti 6338 /* Pakkausten hallintasovellukset */ wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Virtuaaliympäristöä tarvitaan, kun sovellus tarvitsee tietyn version kirjastosta. Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain ympäristöön. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] 6ym8la2mrk5ogptdptg6fbadx1m4wkx 140356 140355 2022-08-22T13:43:20Z Hunsvotti 6338 /* Virtuaaliympäristöt */ wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Virtuaaliympäristöä tarvitaan, kun sovellus tarvitsee tietyn version kirjastosta. Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] fwz0gijpqzac8fhxec6bp30s7iec8r4 140357 140356 2022-08-22T13:43:53Z Hunsvotti 6338 /* Virtuaaliympäristöt */ wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Virtuaaliympäristöä tarvitaan, kun sovellus tarvitsee tietyn version kirjastosta. Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] rlvpkqe1l5a7bwhherg1l56s6ul424a 140358 140357 2022-08-22T13:44:33Z Hunsvotti 6338 /* Virtuaaliympäristöt */ wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Virtuaaliympäristöä tarvitaan, kun sovellus tarvitsee tietyn version kirjastosta. Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] eb7v74ewtcfw04nspa8kzc4kxa87t0l 140359 140358 2022-08-22T13:45:14Z Hunsvotti 6338 /* Virtuaaliympäristöt */ wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] h04u3w1setk37jk12u7n9tntvtud4kc 140360 140359 2022-08-22T13:46:08Z Hunsvotti 6338 /* Virtuaaliympäristöt */ wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] rislgie42f0liqxs96151hk347if2a8 140361 140360 2022-08-22T13:52:52Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import matplotlib.pyplot </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin tuoda pakkauksesta <syntaxhighlight lang="Python"> from matplotlib import pyplot </syntaxhighlight> tai sille voi sille antaa lyhyen nimen. <syntaxhighlight lang="Python"> import matplotlib.pyplot as plt </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] ru6rwzyzu85sot4pkqwbs8tq574p3l0 140362 140361 2022-08-22T13:53:46Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import matplotlib.pyplot </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin nimen tuoda pakkauksesta <syntaxhighlight lang="Python"> from matplotlib import pyplot </syntaxhighlight> tai sille voi sille antaa lyhyen nimen. <syntaxhighlight lang="Python"> import matplotlib.pyplot as plt </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] ldwfhty7umeko100uv4vrjuduz5gfxi 140363 140362 2022-08-22T13:58:04Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. <pre> - pakkaus - moduuli - alipakkaus - toinen_moduuli - kolmas_moduuli </pre> Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import matplotlib.pyplot </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin nimen tuoda pakkauksesta <syntaxhighlight lang="Python"> from matplotlib import pyplot </syntaxhighlight> tai sille voi sille antaa lyhyen nimen. <syntaxhighlight lang="Python"> import matplotlib.pyplot as plt </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] aw2qjhl68wit7iqjinenfqypwbe18wz 140364 140363 2022-08-22T13:58:49Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. * pakkaus ** moduuli ** alipakkaus *** toinen_moduuli ** kolmas_moduuli Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import matplotlib.pyplot </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin nimen tuoda pakkauksesta <syntaxhighlight lang="Python"> from matplotlib import pyplot </syntaxhighlight> tai sille voi sille antaa lyhyen nimen. <syntaxhighlight lang="Python"> import matplotlib.pyplot as plt </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] ol24z2oxgwbnyedpnypmhdl0ecmqqwv 140365 140364 2022-08-22T13:59:01Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. * pakkaus ** moduuli ** alapakkaus *** toinen_moduuli ** kolmas_moduuli Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import matplotlib.pyplot </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin nimen tuoda pakkauksesta <syntaxhighlight lang="Python"> from matplotlib import pyplot </syntaxhighlight> tai sille voi sille antaa lyhyen nimen. <syntaxhighlight lang="Python"> import matplotlib.pyplot as plt </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] 5g9bugc85r72c4ylg6407yxavx1wh6m 140366 140365 2022-08-22T14:00:17Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. * pakkaus ** moduuli ** alapakkaus *** toinen_moduuli ** kolmas_moduuli Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import pakkaus.moduuli import pakkaus.alapakkaus.toinen_moduuli </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin nimen tuoda pakkauksesta <syntaxhighlight lang="Python"> from pakkaus import moduuli from pakkaus.alapakkaus import toinen_moduuli </syntaxhighlight> tai sille voi sille antaa lyhyen nimen. <syntaxhighlight lang="Python"> import matplotlib.pyplot as plt </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] nwuxcv5rogj6f02t87yerzabdbh2hme 140367 140366 2022-08-22T14:01:06Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. * pakkaus ** moduuli ** alapakkaus *** toinen_moduuli ** kolmas_moduuli Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import pakkaus.moduuli import pakkaus.alapakkaus.toinen_moduuli </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin nimen tuoda pakkauksesta <tt>from</tt>-avainsanalla. <syntaxhighlight lang="Python"> from pakkaus import moduuli from pakkaus.alapakkaus import toinen_moduuli </syntaxhighlight> Tai sille voi sille antaa lyhyen nimen <tt>as</tt>-sanalla. <syntaxhighlight lang="Python"> import pakkaus.moduuli as mod1 import pakkaus.alapakkaus.toinen_moduuli as mod2 </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] 53sxyph0wm3x8jp6k3ld23nqcwmwfmq 140368 140367 2022-08-22T14:02:17Z Hunsvotti 6338 /* Virtuaaliympäristöt */ wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. * pakkaus ** moduuli ** alapakkaus *** toinen_moduuli ** kolmas_moduuli Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import pakkaus.moduuli import pakkaus.alapakkaus.toinen_moduuli </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin nimen tuoda pakkauksesta <tt>from</tt>-avainsanalla. <syntaxhighlight lang="Python"> from pakkaus import moduuli from pakkaus.alapakkaus import toinen_moduuli </syntaxhighlight> Tai sille voi sille antaa lyhyen nimen <tt>as</tt>-sanalla. <syntaxhighlight lang="Python"> import pakkaus.moduuli as mod1 import pakkaus.alapakkaus.toinen_moduuli as mod2 </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. Ympäristöstä pääsee ulos <tt>deactivate</tt>-komennolla. <syntaxhighlight lang="Bash"> (projektin_nimi) $ deactivate $ </syntaxhighlight> {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] 8ognj5bvzlceylo24ek81cmm9bu6km4 140369 140368 2022-08-22T14:03:35Z Hunsvotti 6338 /* Virtuaaliympäristöt */ wikitext text/x-wiki {{Edellinen-seuraava|for-silmukka|Luokka}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. * pakkaus ** moduuli ** alapakkaus *** toinen_moduuli ** kolmas_moduuli Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import pakkaus.moduuli import pakkaus.alapakkaus.toinen_moduuli </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin nimen tuoda pakkauksesta <tt>from</tt>-avainsanalla. <syntaxhighlight lang="Python"> from pakkaus import moduuli from pakkaus.alapakkaus import toinen_moduuli </syntaxhighlight> Tai sille voi sille antaa lyhyen nimen <tt>as</tt>-sanalla. <syntaxhighlight lang="Python"> import pakkaus.moduuli as mod1 import pakkaus.alapakkaus.toinen_moduuli as mod2 </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen, voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. Ympäristöstä pääsee ulos <tt>deactivate</tt>-komennolla. <syntaxhighlight lang="Bash"> (projektin_nimi) $ deactivate $ </syntaxhighlight> {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] n79hq3bwjozq75ou27kw3rpuce1gebf 140381 140369 2022-08-23T05:31:41Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava+}} Pakkaus on moduulien kokonaisuus. Pakkaus luodaan tekemällä hakemisto, johon lisätään <tt>__init__.py</tt>-niminen tiedosto. Tiedosto voi olla tyhjä. Tähän pakkaushakemistoon tulevat sen sisältämät moduulitiedostot ja alapakkaukset. * pakkaus ** moduuli ** alapakkaus *** toinen_moduuli ** kolmas_moduuli Pakkauksessa oleva moduuli tuodaan sovellukseen <tt>import</tt>-lauseella pakkaus.moduuli muodossa. <syntaxhighlight lang="Python"> import pakkaus.moduuli import pakkaus.alapakkaus.toinen_moduuli </syntaxhighlight> Jos moduulia ei haluta aina käyttää pakkauksen nimen kanssa voi moduulin nimen tuoda pakkauksesta <tt>from</tt>-avainsanalla. <syntaxhighlight lang="Python"> from pakkaus import moduuli from pakkaus.alapakkaus import toinen_moduuli </syntaxhighlight> Tai sille voi sille antaa lyhyen nimen <tt>as</tt>-sanalla. <syntaxhighlight lang="Python"> import pakkaus.moduuli as mod1 import pakkaus.alapakkaus.toinen_moduuli as mod2 </syntaxhighlight> == Pakkausten hallintasovellukset == Kolmannen osapuolen pakkauksia voi asentaa pakkausten hallintasovelluksilla. Näitä on useita mm. pip. Pipin voi asentaa erillisenä sovelluksena tai sitä voi käyttää python-tulkin kautta. <syntaxhighlight lang="Bash"> $ python -m pip install pakkauksen_nimi </syntaxhighlight> Pakkauksia pitää etsiä muuta kautta, koska haku ei toimi. == Virtuaaliympäristöt == Jos yksi sovellus tarvitsee tietyn version kirjastosta ja toinen toisen, voi avuksi ottaa virtuaaliympäristöt. Virtuaaliympäristöön voi asentaa halutut kirjastot samalla tavalla kuin järjestelmätasolla, mutta kirjastot ovat käytössä vain kyseisessä ympäristössä. Ympäristö kannattaa luoda aina uutta projektia aloittaessa. Virtuaaliympäristö luodaan antamalla seuraava komento hakemistossa jonka alihakemistoksi projekti halutaan luoda. <syntaxhighlight lang="Bash"> $ python -m venv projektin_nimi </syntaxhighlight> Komento luo hakemistorakenteen. <syntaxhighlight lang="Bash"> $ ls projektin_nimi bin include lib lib64 pyvenv.cfg share </syntaxhighlight> Hakemistossa <tt>bin</tt> on skripti <tt>activate</tt>-nimisiä skriptejä eri komentotulkeille, joilla ympäristön voi aktivoida. Esim. bashissa <syntaxhighlight lang="Bash"> $ cd projektin_nimi $ . bin/activate (projektin_nimi) $ </syntaxhighlight> Nyt pipillä asennettavat paketit asentuvat vain projektin ympäristöön. Vaihtoehtoisesti voi käyttää <tt>bin</tt>-hakemistossa olevia versioita pipistä ja python-tulkista. Ympäristöstä pääsee ulos <tt>deactivate</tt>-komennolla. <syntaxhighlight lang="Bash"> (projektin_nimi) $ deactivate $ </syntaxhighlight> {{Python 3}} [[Luokka:Python|{{SUBPAGENAME}}]] lnv132jmkoyo87tfxv0mw56nwi5d3kg Malline:Python 3/tyyli.css 10 19090 140371 2022-08-22T14:11:58Z Hunsvotti 6338 Ak: Uusi sivu: .mw-highlight-lang-bash::before { content: "bash"; background: cornsilk; border-radius: 0.5em; border: solid gray 1px; padding: 0.1em; text-align: right; } .mw-highlight-lang-bash pre { margin-top: 0em; } sanitized-css text/css .mw-highlight-lang-bash::before { content: "bash"; background: cornsilk; border-radius: 0.5em; border: solid gray 1px; padding: 0.1em; text-align: right; } .mw-highlight-lang-bash pre { margin-top: 0em; } jtwhbnnsovruu7cxwijodftmxow7jgi 140372 140371 2022-08-22T14:17:39Z Hunsvotti 6338 sanitized-css text/css .mw-highlight-lang-bash::before { content: "Bash"; background: #f8f9fa; border-radius: 0.5em; border: solid #eef0f3 1px; padding: 0.1em; text-align: right; border-bottom: none; position: relative; top: 2px; } .mw-highlight-lang-bash pre { margin-top: 0em; } rdovwe37o2lexr8uyqxewb6mlrp0s21 140373 140372 2022-08-22T14:22:36Z Hunsvotti 6338 sanitized-css text/css .mw-highlight-lang-bash::before { content: "Bash"; background: cornsilk; border-radius: 0.5em; border: solid #eef0f3 1px; padding: 0.1em; padding-bottom: 1em; } .mw-highlight-lang-bash pre { margin-top: 0em; } sr3ncaeoqpzkfbw7v9cbsyouxawrkkk Moduuli:EdellinenSeuraava/data/Python 3 828 19091 140374 2022-08-23T05:26:07Z Hunsvotti 6338 Ak: Uusi sivu: return { { osa = "Johdanto", sivut = { "Yleistä", "Syntaksi", "Operaattorit", "Ohjelman luonti", "Interaktiivinen Python-tulkki", }, }, { osa = "Tietotyypit ja tietorakenteet", sivut = { "Luvut", "Merkkijonot (string)", "Lista (list)", "Monikko (tuple)", "Sanakirja (dict)", "Joukko (set)",... Scribunto text/plain return { { osa = "Johdanto", sivut = { "Yleistä", "Syntaksi", "Operaattorit", "Ohjelman luonti", "Interaktiivinen Python-tulkki", }, }, { osa = "Tietotyypit ja tietorakenteet", sivut = { "Luvut", "Merkkijonot (string)", "Lista (list)", "Monikko (tuple)", "Sanakirja (dict)", "Joukko (set)", }, { osa = "Ohjausrakenteet", sivut = { "if-lause", "while-silmukka", "for-silmukka", "Virheidenhallinta", }, }, { osa = "Muut kielen rakenteet", sivut = { "Funktio", "Luokka", "Moduuli", "Pakkaus", } }, { osa = "Syöte ja tulostus", sivut = { "Tulostus standarditulostukseen", "Standardisyötteestä lukeminen", "Tiedosto", "Komentoriviargumentit", } }, { osa = "Lisää sekvenssityypeistä", sivut = { "Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla", } } }, { osa = "Lisää funktioista", sivut = { "Sisäiset funktiot", "Korkeamman asteen funktiot", "Generaattorifunktiot", } }, { osa = "Lisää luokista", sivut = { "Iteraattorit", "Operaattoreiden kuormittaminen", "Kontekstimanageri", } }, { osa = "Graafinen käyttöliittymä", sivut = { "GUI", } }, { osa = "Harjoitustehtäviä", sivut = { "Hello, world!", "Wikishakkisivu", } }, { osa = "Lisätiedot ja lähteet", sivut = { "Aiheesta muualla", } }, } 70hczdukw1ekqm45kgiwq0jt32vsin2 140378 140374 2022-08-23T05:29:05Z Hunsvotti 6338 Scribunto text/plain return { { osa = "Johdanto", sivut = { "Yleistä", "Syntaksi", "Operaattorit", "Ohjelman luonti", "Interaktiivinen Python-tulkki", }, }, { osa = "Tietotyypit ja tietorakenteet", sivut = { "Luvut", "Merkkijonot", "Lista", "Monikko", "Sanakirja", "Joukko", }, { osa = "Ohjausrakenteet", sivut = { "if-lause", "while-silmukka", "for-silmukka", "Virheidenhallinta", }, }, { osa = "Muut kielen rakenteet", sivut = { "Funktio", "Luokka", "Moduuli", "Pakkaus", } }, { osa = "Syöte ja tulostus", sivut = { "Tulostus standarditulostukseen", "Standardisyötteestä lukeminen", "Tiedosto", "Komentoriviargumentit", } }, { osa = "Lisää sekvenssityypeistä", sivut = { "Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla", } } }, { osa = "Lisää funktioista", sivut = { "Sisäiset funktiot", "Korkeamman asteen funktiot", "Generaattorifunktiot", } }, { osa = "Lisää luokista", sivut = { "Iteraattorit", "Operaattoreiden kuormittaminen", "Kontekstimanageri", } }, { osa = "Graafinen käyttöliittymä", sivut = { "GUI", } }, { osa = "Harjoitustehtäviä", sivut = { "Hello, world!", "Wikishakkisivu", } }, { osa = "Lisätiedot ja lähteet", sivut = { "Aiheesta muualla", } }, } 42twhryktx6y1mrbhwly08ywitn8ql9 140380 140378 2022-08-23T05:31:20Z Hunsvotti 6338 Scribunto text/plain return { { osa = "Johdanto", sivut = { "Yleistä", "Syntaksi", "Operaattorit", "Ohjelman luonti", "Interaktiivinen Python-tulkki", }, }, { osa = "Tietotyypit ja tietorakenteet", sivut = { "Luvut", "Merkkijonot", "Lista", "Monikko", "Sanakirja", "Joukko", } }, { osa = "Ohjausrakenteet", sivut = { "if-lause", "while-silmukka", "for-silmukka", "Virheidenhallinta", }, }, { osa = "Muut kielen rakenteet", sivut = { "Funktio", "Luokka", "Moduuli", "Pakkaus", } }, { osa = "Syöte ja tulostus", sivut = { "Tulostus standarditulostukseen", "Standardisyötteestä lukeminen", "Tiedosto", "Komentoriviargumentit", } }, { osa = "Lisää sekvenssityypeistä", sivut = { "Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla", } }, { osa = "Lisää funktioista", sivut = { "Sisäiset funktiot", "Korkeamman asteen funktiot", "Generaattorifunktiot", } }, { osa = "Lisää luokista", sivut = { "Iteraattorit", "Operaattoreiden kuormittaminen", "Kontekstimanageri", } }, { osa = "Graafinen käyttöliittymä", sivut = { "GUI", } }, { osa = "Harjoitustehtäviä", sivut = { "Hello, world!", "Wikishakkisivu", } }, { osa = "Lisätiedot ja lähteet", sivut = { "Aiheesta muualla", } }, } jq40fr8h6gtmqo4rxcr01jtc18xgokt 140398 140380 2022-08-23T06:18:40Z Hunsvotti 6338 Scribunto text/plain return { { osa = "Johdanto", sivut = { "Yleistä", "Syntaksi", "Operaattorit", "Ohjelman luonti", "Python-tulkki", "Interaktiivinen Python-tulkki", }, }, { osa = "Tietotyypit ja tietorakenteet", sivut = { "Luvut", "Merkkijonot", "Lista", "Monikko", "Sanakirja", "Joukko", } }, { osa = "Ohjausrakenteet", sivut = { "if-lause", "while-silmukka", "for-silmukka", "Virheidenhallinta", }, }, { osa = "Muut kielen rakenteet", sivut = { "Funktio", "Luokka", "Moduuli", "Pakkaus", } }, { osa = "Syöte ja tulostus", sivut = { "Tulostus standarditulostukseen", "Standardisyötteestä lukeminen", "Tiedosto", "Komentoriviargumentit", } }, { osa = "Lisää sekvenssityypeistä", sivut = { "Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla", } }, { osa = "Lisää funktioista", sivut = { "Sisäiset funktiot", "Korkeamman asteen funktiot", "Generaattorifunktiot", } }, { osa = "Lisää luokista", sivut = { "Iteraattorit", "Operaattoreiden kuormittaminen", "Kontekstimanageri", } }, { osa = "Graafinen käyttöliittymä", sivut = { "GUI", } }, { osa = "Harjoitustehtäviä", sivut = { "Hello, world!", "Wikishakkisivu", } }, { osa = "Lisätiedot ja lähteet", sivut = { "Aiheesta muualla", } }, } hz78yasecowfa4qpu44pskz0amwih9r 140414 140398 2022-08-23T07:25:26Z Hunsvotti 6338 Scribunto text/plain return { { osa = "Johdanto", sivut = { "Yleistä", "Syntaksi", "Operaattorit", "Ohjelman luonti", "Python-tulkki", "Interaktiivinen Python-tulkki", }, }, { osa = "Tietotyypit ja tietorakenteet", sivut = { "Luvut", "Merkkijonot", "Lista", "Monikko", "Sanakirja", "Joukko", } }, { osa = "Ohjausrakenteet", sivut = { "if-lause", "while-silmukka", "for-silmukka", "Virheidenhallinta", }, }, { osa = "Muut kielen rakenteet", sivut = { "Funktio", "Luokka", "Moduuli", "Pakkaus", } }, { osa = "Syöte ja tulostus", sivut = { "Tulostus standarditulostukseen", "Standardisyötteestä lukeminen", "Tiedosto", "Komentoriviargumentit", } }, { osa = "Vianetsintä", sivut = { "assert ja debug|assert ja __debug__", --"Debuggeri pdb", } }, { osa = "Lisää sekvenssityypeistä", sivut = { "Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla", } }, { osa = "Lisää funktioista", sivut = { "Sisäiset funktiot", "Korkeamman asteen funktiot", "Generaattorifunktiot", } }, { osa = "Lisää luokista", sivut = { "Iteraattorit", "Operaattoreiden kuormittaminen", "Kontekstimanageri", } }, { osa = "Graafinen käyttöliittymä", sivut = { "GUI", } }, { osa = "Harjoitustehtäviä", sivut = { "Hello, world!", "Wikishakkisivu", } }, { osa = "Lisätiedot ja lähteet", sivut = { "Aiheesta muualla", } }, } kml33eu6kfll1q8crq81i0ob424u7qv 140415 140414 2022-08-23T07:26:09Z Hunsvotti 6338 Scribunto text/plain return { { osa = "Johdanto", sivut = { "Yleistä", "Syntaksi", "Operaattorit", "Ohjelman luonti", "Python-tulkki", "Interaktiivinen Python-tulkki", }, }, { osa = "Tietotyypit ja tietorakenteet", sivut = { "Luvut", "Merkkijonot", "Lista", "Monikko", "Sanakirja", "Joukko", } }, { osa = "Ohjausrakenteet", sivut = { "if-lause", "while-silmukka", "for-silmukka", "Virheidenhallinta", }, }, { osa = "Muut kielen rakenteet", sivut = { "Funktio", "Luokka", "Moduuli", "Pakkaus", } }, { osa = "Syöte ja tulostus", sivut = { "Tulostus standarditulostukseen", "Standardisyötteestä lukeminen", "Tiedosto", "Komentoriviargumentit", } }, { osa = "Vianetsintä", sivut = { "assert ja debug", --"Debuggeri pdb", } }, { osa = "Lisää sekvenssityypeistä", sivut = { "Listan, sanakirjan, joukon ja generaattorin luominen kuvailemalla", } }, { osa = "Lisää funktioista", sivut = { "Sisäiset funktiot", "Korkeamman asteen funktiot", "Generaattorifunktiot", } }, { osa = "Lisää luokista", sivut = { "Iteraattorit", "Operaattoreiden kuormittaminen", "Kontekstimanageri", } }, { osa = "Graafinen käyttöliittymä", sivut = { "GUI", } }, { osa = "Harjoitustehtäviä", sivut = { "Hello, world!", "Wikishakkisivu", } }, { osa = "Lisätiedot ja lähteet", sivut = { "Aiheesta muualla", } }, } 2c0e40ogqh5aw43muaaxl4w8580cdn7 Python 3/Python-tulkki 0 19092 140399 2022-08-23T06:34:19Z Hunsvotti 6338 Ak: Uusi sivu: {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään seuraavassa luvussa. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> <tt>-O</tt> ja <tt>-OO</tt> Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtola... wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään seuraavassa luvussa. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> <tt>-O</tt> ja <tt>-OO</tt> Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet. <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> <tt>-c</tt> <koodin> Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> {{Python 3}} dwv042136za9622gv1e4xwncs370w1u 140400 140399 2022-08-23T06:38:32Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään seuraavassa luvussa. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. Käynnistäminen ilman parametreja käynnistää interaktiivisen istunnon. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> Kun parametriksi annetaan ohjelmatiedsto, suoritetaan tiedosto ja lopetetaan. <syntaxhighlight lang="Bash"> $ python3 ohjelma.py </syntaxhighlight> <tt>-i</tt> Parametri <tt>-i</tt>:llä toisena parametrina annettu ohjelma suoritetaan ja sen jälkeen avataan interaktiivinen istunto samassa ympäristössä. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py </syntaxhighlight> <tt>-O</tt> ja <tt>-OO</tt> Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet. <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> <tt>-c</tt> <koodin> Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> {{Python 3}} ofem4ikgd1o2qebs4nx1ipsd4trr3t9 140401 140400 2022-08-23T06:43:36Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään seuraavassa luvussa. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. Käynnistäminen ilman parametreja käynnistää interaktiivisen istunnon. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> Kun parametriksi annetaan ohjelmatiedsto, suoritetaan tiedosto ja lopetetaan. <syntaxhighlight lang="Bash"> $ python3 ohjelma.py </syntaxhighlight> == <tt>-i</tt> == Parametri <tt>-i</tt>:llä toisena parametrina annettu ohjelma suoritetaan ja sen jälkeen avataan interaktiivinen istunto samassa ympäristössä. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py </syntaxhighlight> == <tt>-O</tt> ja <tt>-OO</tt> == Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet. <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> == <tt>-c</tt> <koodin> == Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> == <tt>-m</tt> <moduuli> == Suorittaa annetun moduulin. Moduuli nimi annetaan kuten <tt>import</tt>-lauseella ja se voi olla missä tahansa mistä moduuleja etsitään. {{Python 3}} 9a3vkk9eelp5ep1ttwcdptd4jid7q8e 140402 140401 2022-08-23T06:44:11Z Hunsvotti 6338 /* -c */ wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään seuraavassa luvussa. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. Käynnistäminen ilman parametreja käynnistää interaktiivisen istunnon. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> Kun parametriksi annetaan ohjelmatiedsto, suoritetaan tiedosto ja lopetetaan. <syntaxhighlight lang="Bash"> $ python3 ohjelma.py </syntaxhighlight> == <tt>-i</tt> == Parametri <tt>-i</tt>:llä toisena parametrina annettu ohjelma suoritetaan ja sen jälkeen avataan interaktiivinen istunto samassa ympäristössä. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py </syntaxhighlight> == <tt>-O</tt> ja <tt>-OO</tt> == Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet. <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> == <tt>-c</tt> <koodi> == Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). Koodirivit voi erottaa puolipisteellä (;). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> == <tt>-m</tt> <moduuli> == Suorittaa annetun moduulin. Moduuli nimi annetaan kuten <tt>import</tt>-lauseella ja se voi olla missä tahansa mistä moduuleja etsitään. {{Python 3}} 0bv2v5omci19w256wcv4jbgv1nhldlk 140403 140402 2022-08-23T06:46:52Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään seuraavassa luvussa. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. Käynnistäminen ilman parametreja käynnistää interaktiivisen istunnon. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> Kun parametriksi annetaan ohjelmatiedsto, suoritetaan tiedosto ja lopetetaan. <syntaxhighlight lang="Bash"> $ python3 ohjelma.py </syntaxhighlight> Huomaa, että mahdolliset Python-tulkille annettavat parametrit annetaan ennen ohjelmatiedosta, ja ohjelmatiedostolle annettavat sen jälkeen. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py 1 2 3 </syntaxhighlight> == <tt>-i</tt> == Parametri <tt>-i</tt>:llä toisena parametrina annettu ohjelma suoritetaan ja sen jälkeen avataan interaktiivinen istunto samassa ympäristössä. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py </syntaxhighlight> == <tt>-O</tt> ja <tt>-OO</tt> == Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet. <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> == <tt>-c</tt> <koodi> == Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). Koodirivit voi erottaa puolipisteellä (;). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> == <tt>-m</tt> <moduuli> == Suorittaa annetun moduulin. Moduuli nimi annetaan kuten <tt>import</tt>-lauseella ja se voi olla missä tahansa mistä moduuleja etsitään. {{Python 3}} sm3i8t4rb8w4iezom1h3b2p9uvg19vw 140404 140403 2022-08-23T06:53:28Z Hunsvotti 6338 /* -m */ wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään seuraavassa luvussa. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. Käynnistäminen ilman parametreja käynnistää interaktiivisen istunnon. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> Kun parametriksi annetaan ohjelmatiedsto, suoritetaan tiedosto ja lopetetaan. <syntaxhighlight lang="Bash"> $ python3 ohjelma.py </syntaxhighlight> Huomaa, että mahdolliset Python-tulkille annettavat parametrit annetaan ennen ohjelmatiedosta, ja ohjelmatiedostolle annettavat sen jälkeen. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py 1 2 3 </syntaxhighlight> == <tt>-i</tt> == Parametri <tt>-i</tt>:llä toisena parametrina annettu ohjelma suoritetaan ja sen jälkeen avataan interaktiivinen istunto samassa ympäristössä. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py </syntaxhighlight> == <tt>-O</tt> ja <tt>-OO</tt> == Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet. <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> == <tt>-c</tt> <koodi> == Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). Koodirivit voi erottaa puolipisteellä (;). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> == <tt>-m</tt> <moduuli> == Suorittaa annetun moduulin. Moduuli nimi annetaan kuten <tt>import</tt>-lauseella ja se voi olla missä tahansa mistä moduuleja etsitään. Riippuu moduulista onko sitä mielekästä käyttää tällä tavalla. Esimerkiksi <tt>timeit</tt>-moduulilla voi testata Python-lauseiden suoritusaikoja. <syntaxhighlight lang="Bash"> $ python3 -m timeit '"-".join(str(n) for n in range(100))' 10000 loops, best of 5: 30.9 usec per loop </syntaxhighlight> Muita <tt>-m</tt>-parametrilla käytettäviä moduuleja ovat mm. <tt>pip</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Pakkausten hallintasovellukset}}) ja <tt>venv</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Virtuaaliympäristöt}}). {{Python 3}} 2ix1ykp3hlar2l4znrmb66my343tpou 140405 140404 2022-08-23T06:54:13Z Hunsvotti 6338 /* -m */ wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään seuraavassa luvussa. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. Käynnistäminen ilman parametreja käynnistää interaktiivisen istunnon. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> Kun parametriksi annetaan ohjelmatiedsto, suoritetaan tiedosto ja lopetetaan. <syntaxhighlight lang="Bash"> $ python3 ohjelma.py </syntaxhighlight> Huomaa, että mahdolliset Python-tulkille annettavat parametrit annetaan ennen ohjelmatiedosta, ja ohjelmatiedostolle annettavat sen jälkeen. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py 1 2 3 </syntaxhighlight> == <tt>-i</tt> == Parametri <tt>-i</tt>:llä toisena parametrina annettu ohjelma suoritetaan ja sen jälkeen avataan interaktiivinen istunto samassa ympäristössä. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py </syntaxhighlight> == <tt>-O</tt> ja <tt>-OO</tt> == Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet. <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> == <tt>-c</tt> <koodi> == Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). Koodirivit voi erottaa puolipisteellä (;). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> == <tt>-m</tt> <moduuli> == Suorittaa annetun moduulin. Moduuli nimi annetaan kuten <tt>import</tt>-lauseella ja se voi olla missä tahansa mistä moduuleja etsitään. Riippuu moduulista onko sitä mielekästä käyttää tällä tavalla. Esimerkiksi <tt>timeit</tt>-moduulilla voi vertailla Python-lauseiden suoritusaikoja. <syntaxhighlight lang="Bash"> $ python3 -m timeit '"-".join(str(n) for n in range(100))' 10000 loops, best of 5: 30.9 usec per loop </syntaxhighlight> Muita <tt>-m</tt>-parametrilla käytettäviä moduuleja ovat mm. <tt>pip</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Pakkausten hallintasovellukset}}) ja <tt>venv</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Virtuaaliympäristöt}}). {{Python 3}} c9potz3yw1cd88fum84oas3dequg2qf 140406 140405 2022-08-23T06:56:15Z Hunsvotti 6338 wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään [[Python 3/Interaktiivinen Python-tulkki|seuraavassa luvussa]]. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. Käynnistäminen ilman parametreja käynnistää interaktiivisen istunnon. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> Kun parametriksi annetaan ohjelmatiedsto, suoritetaan tiedosto ja lopetetaan. <syntaxhighlight lang="Bash"> $ python3 ohjelma.py </syntaxhighlight> Huomaa, että mahdolliset Python-tulkille annettavat parametrit annetaan ennen ohjelmatiedosta, ja ohjelmatiedostolle annettavat sen jälkeen. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py 1 2 3 </syntaxhighlight> == <tt>-i</tt> == Parametri <tt>-i</tt>:llä toisena parametrina annettu ohjelma suoritetaan ja sen jälkeen avataan interaktiivinen istunto samassa ympäristössä. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py </syntaxhighlight> == <tt>-O</tt> ja <tt>-OO</tt> == Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet. <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> == <tt>-c</tt> <koodi> == Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). Koodirivit voi erottaa puolipisteellä (;). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> == <tt>-m</tt> <moduuli> == Suorittaa annetun moduulin. Moduuli nimi annetaan kuten <tt>import</tt>-lauseella ja se voi olla missä tahansa mistä moduuleja etsitään. Riippuu moduulista onko sitä mielekästä käyttää tällä tavalla. Esimerkiksi <tt>timeit</tt>-moduulilla voi vertailla Python-lauseiden suoritusaikoja. <syntaxhighlight lang="Bash"> $ python3 -m timeit '"-".join(str(n) for n in range(100))' 10000 loops, best of 5: 30.9 usec per loop </syntaxhighlight> Muita <tt>-m</tt>-parametrilla käytettäviä moduuleja ovat mm. <tt>pip</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Pakkausten hallintasovellukset}}) ja <tt>venv</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Virtuaaliympäristöt}}). {{Python 3}} f66ceewg53usvn11t7vg48ogxe9r6mu 140407 140406 2022-08-23T06:58:07Z Hunsvotti 6338 /* -O ja -OO */ wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään [[Python 3/Interaktiivinen Python-tulkki|seuraavassa luvussa]]. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. Käynnistäminen ilman parametreja käynnistää interaktiivisen istunnon. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> Kun parametriksi annetaan ohjelmatiedsto, suoritetaan tiedosto ja lopetetaan. <syntaxhighlight lang="Bash"> $ python3 ohjelma.py </syntaxhighlight> Huomaa, että mahdolliset Python-tulkille annettavat parametrit annetaan ennen ohjelmatiedosta, ja ohjelmatiedostolle annettavat sen jälkeen. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py 1 2 3 </syntaxhighlight> == <tt>-i</tt> == Parametri <tt>-i</tt>:llä toisena parametrina annettu ohjelma suoritetaan ja sen jälkeen avataan interaktiivinen istunto samassa ympäristössä. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py </syntaxhighlight> == <tt>-O</tt> ja <tt>-OO</tt> == Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet (ks. osa [[Python 3/Vianetsintä]]). <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> == <tt>-c</tt> <koodi> == Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). Koodirivit voi erottaa puolipisteellä (;). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> == <tt>-m</tt> <moduuli> == Suorittaa annetun moduulin. Moduuli nimi annetaan kuten <tt>import</tt>-lauseella ja se voi olla missä tahansa mistä moduuleja etsitään. Riippuu moduulista onko sitä mielekästä käyttää tällä tavalla. Esimerkiksi <tt>timeit</tt>-moduulilla voi vertailla Python-lauseiden suoritusaikoja. <syntaxhighlight lang="Bash"> $ python3 -m timeit '"-".join(str(n) for n in range(100))' 10000 loops, best of 5: 30.9 usec per loop </syntaxhighlight> Muita <tt>-m</tt>-parametrilla käytettäviä moduuleja ovat mm. <tt>pip</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Pakkausten hallintasovellukset}}) ja <tt>venv</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Virtuaaliympäristöt}}). {{Python 3}} iquk864hrfux6iivyhxyf97h3lvjsgw 140411 140407 2022-08-23T07:01:37Z Hunsvotti 6338 /* -O ja -OO */ wikitext text/x-wiki {{Edellinen-seuraava+}} Python on tulkattava kieli. Ohjelmien suorittamiseen käytetään Python-tulkkia, joka suorittaa ohjelman. Python-tulkkia voi käyttää myös interaktiivisesti. Sitä käsitellään [[Python 3/Interaktiivinen Python-tulkki|seuraavassa luvussa]]. Tässä osassa käsitellään joitakin tärkeimpiä tulkin parametreja. Käynnistäminen ilman parametreja käynnistää interaktiivisen istunnon. <syntaxhighlight lang="Bash"> $ python3 </syntaxhighlight> Kun parametriksi annetaan ohjelmatiedsto, suoritetaan tiedosto ja lopetetaan. <syntaxhighlight lang="Bash"> $ python3 ohjelma.py </syntaxhighlight> Huomaa, että mahdolliset Python-tulkille annettavat parametrit annetaan ennen ohjelmatiedosta, ja ohjelmatiedostolle annettavat sen jälkeen. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py 1 2 3 </syntaxhighlight> == <tt>-i</tt> == Parametri <tt>-i</tt>:llä toisena parametrina annettu ohjelma suoritetaan ja sen jälkeen avataan interaktiivinen istunto samassa ympäristössä. <syntaxhighlight lang="Bash"> $ python3 -i ohjelma.py </syntaxhighlight> == <tt>-O</tt> ja <tt>-OO</tt> == Optimoi ajettavan koodin poistamalla siitä <tt>assert</tt> ja <tt>__debug__</tt>-ehtolauseet (ks. osa [[Python 3/assert ja __debug__|<tt>assert</tt> ja <tt>__debug__</tt>]]). <tt>-OO</tt> poistaa lisäksi ohjetekstit. Kun ohjelma ajetaan tuotannossa käytetään yleensä jompaa kumpaa. Kehitysvaiheessa taas ei tulisi käyttää kumpaakaan. <syntaxhighlight lang="Bash"> $ python3 -O oma_ohjelma.py </syntaxhighlight> == <tt>-c</tt> <koodi> == Suorittaa parametrina annetun koodin. Esimerkiksi alla oleva koodi lukee syötteestä numeroita ja summaa ne yhteen (kun painat ctrl-D). Koodirivit voi erottaa puolipisteellä (;). <syntaxhighlight lang="Bash"> $ python -c "import sys; print('Tulos:', round(sum(map(lambda line: float(line), sys.stdin.readlines())), 2))" 600 15.30 21 69.90 Tulos: 706.2 </syntaxhighlight> == <tt>-m</tt> <moduuli> == Suorittaa annetun moduulin. Moduuli nimi annetaan kuten <tt>import</tt>-lauseella ja se voi olla missä tahansa mistä moduuleja etsitään. Riippuu moduulista onko sitä mielekästä käyttää tällä tavalla. Esimerkiksi <tt>timeit</tt>-moduulilla voi vertailla Python-lauseiden suoritusaikoja. <syntaxhighlight lang="Bash"> $ python3 -m timeit '"-".join(str(n) for n in range(100))' 10000 loops, best of 5: 30.9 usec per loop </syntaxhighlight> Muita <tt>-m</tt>-parametrilla käytettäviä moduuleja ovat mm. <tt>pip</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Pakkausten hallintasovellukset}}) ja <tt>venv</tt> (ks. {{Aliosiolinkki|Python 3|Pakkaus|Virtuaaliympäristöt}}). {{Python 3}} iqryzq6hvopjwcnvpgwv9omak1sw4ii Python 3/assert ja debug 0 19093 140412 2022-08-23T07:22:11Z Hunsvotti 6338 Ak: Uusi sivu: {{Edellinen-seuraava+}} == <tt>assert</tt> == Lauseella <tt>assert</tt> voi testat, että ohjelman sisäinen logiikka on koherenttia. <tt>Assert</tt>-lauseelle annetaan ehto, jonka oletetaan olevan tosi. Jos ehto ei ole tosi, keskeytyy ohjelman suoritus <tt>AssertError</tt>-virheeseen. Lauseelle voi antaa myös valinnaisen tekstin, joka tulostetaan virheen kanssa. <tt>Assert</tt>-lause on muotoa<br/> <tt>assert</tt> ''ehto'', [''virheilmoitus''] Esimerkiksi voimme varmista... wikitext text/x-wiki {{Edellinen-seuraava+}} == <tt>assert</tt> == Lauseella <tt>assert</tt> voi testat, että ohjelman sisäinen logiikka on koherenttia. <tt>Assert</tt>-lauseelle annetaan ehto, jonka oletetaan olevan tosi. Jos ehto ei ole tosi, keskeytyy ohjelman suoritus <tt>AssertError</tt>-virheeseen. Lauseelle voi antaa myös valinnaisen tekstin, joka tulostetaan virheen kanssa. <tt>Assert</tt>-lause on muotoa<br/> <tt>assert</tt> ''ehto'', [''virheilmoitus''] Esimerkiksi voimme varmistaa, että funktiolle annettavat parametrit ovat sellaisia, kuin oletamme. <syntaxhighlight lang="Python"> def tee_jakolasku(jaettava, jakaja): assert jakaja != 0, "Jakaja on nolla" return jaettava / jakaja </syntaxhighlight> <syntaxhighlight lang="Python"> def aikaväli(alku, loppu): assert loppu >= alku, "Loppu on ennen alkua" return loppu - alku </syntaxhighlight> == <tt>__debug__</tt> == Debug-muuttujaa voi käyttää ehtolauseissa, kun halutaan suorittaa koodia, joka suoritetaan vain kehitysvaiheessa, ei valmiissa ohjelmassa. Kun <tt>if</tt>-lauseen ehdoksi laitta <tt>__debug__</tt>-muuttujan, suoritetaan <tt>if</tt>-lohkon sisällä oleva koodi vain, kun ohjelma ajetaan kehitysmoodissa. <syntaxhighlight lang="Python"> if __debug__: print(f"Muuttuja on nyt {muuttuja}") </syntaxhighlight> Ohjelma ajetaan kehitysmoodissa, kun se käynnistetään ilman tulkille annettavia opitimointiparametreja <tt>-O</tt> tai <tt>-OO</tt>. Kun tulkille annetaan jompi kumpi optimointiparametreista, poistetaan kaikki <tt>__debug__</tt>-ehdot ja <tt>assert</tt>-lauseet. {{Python 3}} 9ewgnagm60otnrjq2tmmmdaptugse5r 140413 140412 2022-08-23T07:23:48Z Hunsvotti 6338 /* __debug__ */ wikitext text/x-wiki {{Edellinen-seuraava+}} == <tt>assert</tt> == Lauseella <tt>assert</tt> voi testat, että ohjelman sisäinen logiikka on koherenttia. <tt>Assert</tt>-lauseelle annetaan ehto, jonka oletetaan olevan tosi. Jos ehto ei ole tosi, keskeytyy ohjelman suoritus <tt>AssertError</tt>-virheeseen. Lauseelle voi antaa myös valinnaisen tekstin, joka tulostetaan virheen kanssa. <tt>Assert</tt>-lause on muotoa<br/> <tt>assert</tt> ''ehto'', [''virheilmoitus''] Esimerkiksi voimme varmistaa, että funktiolle annettavat parametrit ovat sellaisia, kuin oletamme. <syntaxhighlight lang="Python"> def tee_jakolasku(jaettava, jakaja): assert jakaja != 0, "Jakaja on nolla" return jaettava / jakaja </syntaxhighlight> <syntaxhighlight lang="Python"> def aikaväli(alku, loppu): assert loppu >= alku, "Loppu on ennen alkua" return loppu - alku </syntaxhighlight> == <tt>__debug__</tt> == Debug-muuttujaa voi käyttää ehtolauseissa, kun halutaan suorittaa koodia, joka suoritetaan vain kehitysvaiheessa, ei valmiissa ohjelmassa. Kun <tt>if</tt>-lauseen ehdoksi laitta <tt>__debug__</tt>-muuttujan, suoritetaan <tt>if</tt>-lohkon sisällä oleva koodi vain, kun ohjelma ajetaan kehitysmoodissa. <syntaxhighlight lang="Python"> if __debug__: print(f"Muuttuja on nyt {muuttuja}") </syntaxhighlight> Ohjelma ajetaan kehitysmoodissa, kun se käynnistetään ilman tulkille annettavia opitimointiparametreja <tt>-O</tt> tai <tt>-OO</tt> (ks. {{Aliosiolinkki|Python 3|Python-tulkki|-O ja -OO}}). Kun tulkille annetaan jompi kumpi optimointiparametreista, poistetaan kaikki <tt>__debug__</tt>-ehdot ja <tt>assert</tt>-lauseet. {{Python 3}} m3olssie5zr8nshw4qhg1zlrdh6kb7u 140416 140413 2022-08-23T07:29:23Z Hunsvotti 6338 /* assert */ wikitext text/x-wiki {{Edellinen-seuraava+}} == <tt>assert</tt> == Lauseella <tt>assert</tt> voi testat, että ohjelman sisäinen logiikka on koherenttia. <tt>Assert</tt>-lauseelle annetaan ehto, jonka oletetaan olevan tosi. Jos ehto ei ole tosi, keskeytyy ohjelman suoritus <tt>AssertError</tt>-virheeseen. Lauseelle voi antaa myös valinnaisen tekstin, joka tulostetaan virheen kanssa. <tt>Assert</tt>-lause on muotoa<br/> <tt>assert</tt> ''ehto'', [''virheilmoitus''] Esimerkiksi voimme varmistaa, että funktiolle annettavat parametrit ovat sellaisia, kuin oletamme. <syntaxhighlight lang="Python"> def tee_jakolasku(jaettava, jakaja): assert jakaja != 0, "Jakaja on nolla" return jaettava / jakaja </syntaxhighlight> <syntaxhighlight lang="Python"> def aikaväli(alku, loppu): assert loppu >= alku, "Loppu on ennen alkua" return loppu - alku </syntaxhighlight> <tt>Assert</tt>-lausetta ei pidä käyttää muiden virheiden käsittelyssä, esimerkiksi käyttäjän antamia syötteitä tarkistettaessa. == <tt>__debug__</tt> == Debug-muuttujaa voi käyttää ehtolauseissa, kun halutaan suorittaa koodia, joka suoritetaan vain kehitysvaiheessa, ei valmiissa ohjelmassa. Kun <tt>if</tt>-lauseen ehdoksi laitta <tt>__debug__</tt>-muuttujan, suoritetaan <tt>if</tt>-lohkon sisällä oleva koodi vain, kun ohjelma ajetaan kehitysmoodissa. <syntaxhighlight lang="Python"> if __debug__: print(f"Muuttuja on nyt {muuttuja}") </syntaxhighlight> Ohjelma ajetaan kehitysmoodissa, kun se käynnistetään ilman tulkille annettavia opitimointiparametreja <tt>-O</tt> tai <tt>-OO</tt> (ks. {{Aliosiolinkki|Python 3|Python-tulkki|-O ja -OO}}). Kun tulkille annetaan jompi kumpi optimointiparametreista, poistetaan kaikki <tt>__debug__</tt>-ehdot ja <tt>assert</tt>-lauseet. {{Python 3}} 3drc53lm5l323y8jktatr41zrh2ylz9 140417 140416 2022-08-23T07:31:04Z Hunsvotti 6338 /* assert */ wikitext text/x-wiki {{Edellinen-seuraava+}} == <tt>assert</tt> == Lauseella <tt>assert</tt> voi testat, että ohjelman sisäinen logiikka on sellaista kuin sen oletetaan olevan. <tt>Assert</tt>-lausetta ei pidä käyttää muiden virheiden käsittelyssä, esimerkiksi käyttäjän antamia syötteitä tarkistettaessa. <tt>Assert</tt>-lauseelle annetaan ehto, jonka oletetaan olevan tosi. Jos ehto ei ole tosi, keskeytyy ohjelman suoritus <tt>AssertError</tt>-virheeseen. Lauseelle voi antaa myös valinnaisen tekstin, joka tulostetaan virheen kanssa. <tt>Assert</tt>-lause on muotoa<br/> <tt>assert</tt> ''ehto'', [''virheilmoitus''] Esimerkiksi voimme varmistaa, että funktiolle annettavat parametrit ovat sellaisia, kuin oletamme. <syntaxhighlight lang="Python"> def tee_jakolasku(jaettava, jakaja): assert jakaja != 0, "Jakaja on nolla" return jaettava / jakaja </syntaxhighlight> <syntaxhighlight lang="Python"> def aikaväli(alku, loppu): assert loppu >= alku, "Loppu on ennen alkua" return loppu - alku </syntaxhighlight> == <tt>__debug__</tt> == Debug-muuttujaa voi käyttää ehtolauseissa, kun halutaan suorittaa koodia, joka suoritetaan vain kehitysvaiheessa, ei valmiissa ohjelmassa. Kun <tt>if</tt>-lauseen ehdoksi laitta <tt>__debug__</tt>-muuttujan, suoritetaan <tt>if</tt>-lohkon sisällä oleva koodi vain, kun ohjelma ajetaan kehitysmoodissa. <syntaxhighlight lang="Python"> if __debug__: print(f"Muuttuja on nyt {muuttuja}") </syntaxhighlight> Ohjelma ajetaan kehitysmoodissa, kun se käynnistetään ilman tulkille annettavia opitimointiparametreja <tt>-O</tt> tai <tt>-OO</tt> (ks. {{Aliosiolinkki|Python 3|Python-tulkki|-O ja -OO}}). Kun tulkille annetaan jompi kumpi optimointiparametreista, poistetaan kaikki <tt>__debug__</tt>-ehdot ja <tt>assert</tt>-lauseet. {{Python 3}} 53wpucgv8a7hkqbzoydvnu692jus5q9 140418 140417 2022-08-23T07:32:07Z Hunsvotti 6338 /* assert */ wikitext text/x-wiki {{Edellinen-seuraava+}} == <tt>assert</tt> == Lauseella <tt>assert</tt> voi testat, että ohjelman sisäinen logiikka on sellaista kuin sen oletetaan olevan. <tt>Assert</tt>-lausetta ei pidä käyttää muiden virheiden, kuten väärien käyttäjän antamien syötteiden käsittelyssä. <tt>Assert</tt>-lauseelle annetaan ehto, jonka oletetaan olevan tosi. Jos ehto ei ole tosi, keskeytyy ohjelman suoritus <tt>AssertError</tt>-virheeseen. Lauseelle voi antaa myös valinnaisen tekstin, joka tulostetaan virheen kanssa. <tt>Assert</tt>-lause on muotoa<br/> <tt>assert</tt> ''ehto'', [''virheilmoitus''] Esimerkiksi voimme varmistaa, että funktiolle annettavat parametrit ovat sellaisia, kuin oletamme. <syntaxhighlight lang="Python"> def tee_jakolasku(jaettava, jakaja): assert jakaja != 0, "Jakaja on nolla" return jaettava / jakaja </syntaxhighlight> <syntaxhighlight lang="Python"> def aikaväli(alku, loppu): assert loppu >= alku, "Loppu on ennen alkua" return loppu - alku </syntaxhighlight> == <tt>__debug__</tt> == Debug-muuttujaa voi käyttää ehtolauseissa, kun halutaan suorittaa koodia, joka suoritetaan vain kehitysvaiheessa, ei valmiissa ohjelmassa. Kun <tt>if</tt>-lauseen ehdoksi laitta <tt>__debug__</tt>-muuttujan, suoritetaan <tt>if</tt>-lohkon sisällä oleva koodi vain, kun ohjelma ajetaan kehitysmoodissa. <syntaxhighlight lang="Python"> if __debug__: print(f"Muuttuja on nyt {muuttuja}") </syntaxhighlight> Ohjelma ajetaan kehitysmoodissa, kun se käynnistetään ilman tulkille annettavia opitimointiparametreja <tt>-O</tt> tai <tt>-OO</tt> (ks. {{Aliosiolinkki|Python 3|Python-tulkki|-O ja -OO}}). Kun tulkille annetaan jompi kumpi optimointiparametreista, poistetaan kaikki <tt>__debug__</tt>-ehdot ja <tt>assert</tt>-lauseet. {{Python 3}} qqt7bh69qliucl1xbaae4ahkhei3e3c 140419 140418 2022-08-23T07:32:26Z Hunsvotti 6338 /* assert */ wikitext text/x-wiki {{Edellinen-seuraava+}} == <tt>assert</tt> == Lauseella <tt>assert</tt> voi testata, että ohjelman sisäinen logiikka on sellaista kuin sen oletetaan olevan. <tt>Assert</tt>-lausetta ei pidä käyttää muiden virheiden, kuten väärien käyttäjän antamien syötteiden käsittelyssä. <tt>Assert</tt>-lauseelle annetaan ehto, jonka oletetaan olevan tosi. Jos ehto ei ole tosi, keskeytyy ohjelman suoritus <tt>AssertError</tt>-virheeseen. Lauseelle voi antaa myös valinnaisen tekstin, joka tulostetaan virheen kanssa. <tt>Assert</tt>-lause on muotoa<br/> <tt>assert</tt> ''ehto'', [''virheilmoitus''] Esimerkiksi voimme varmistaa, että funktiolle annettavat parametrit ovat sellaisia, kuin oletamme. <syntaxhighlight lang="Python"> def tee_jakolasku(jaettava, jakaja): assert jakaja != 0, "Jakaja on nolla" return jaettava / jakaja </syntaxhighlight> <syntaxhighlight lang="Python"> def aikaväli(alku, loppu): assert loppu >= alku, "Loppu on ennen alkua" return loppu - alku </syntaxhighlight> == <tt>__debug__</tt> == Debug-muuttujaa voi käyttää ehtolauseissa, kun halutaan suorittaa koodia, joka suoritetaan vain kehitysvaiheessa, ei valmiissa ohjelmassa. Kun <tt>if</tt>-lauseen ehdoksi laitta <tt>__debug__</tt>-muuttujan, suoritetaan <tt>if</tt>-lohkon sisällä oleva koodi vain, kun ohjelma ajetaan kehitysmoodissa. <syntaxhighlight lang="Python"> if __debug__: print(f"Muuttuja on nyt {muuttuja}") </syntaxhighlight> Ohjelma ajetaan kehitysmoodissa, kun se käynnistetään ilman tulkille annettavia opitimointiparametreja <tt>-O</tt> tai <tt>-OO</tt> (ks. {{Aliosiolinkki|Python 3|Python-tulkki|-O ja -OO}}). Kun tulkille annetaan jompi kumpi optimointiparametreista, poistetaan kaikki <tt>__debug__</tt>-ehdot ja <tt>assert</tt>-lauseet. {{Python 3}} iyjujl26a22y0w0cc261ien2malp37m