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 · 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