Ero sivun ”Python” versioiden välillä

Siirry navigaatioon Siirry hakuun
p 144
 
(11 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä)
Rivi 8: Rivi 8:
| evaluointitapa  = innokas
| evaluointitapa  = innokas
| muistinhallinta = [[wikipedia:fi:Automaattinen_roskienkeräys|automaattinen]]
| muistinhallinta = [[wikipedia:fi:Automaattinen_roskienkeräys|automaattinen]]
| tekijä          =  
| tekijä          = Python Software Foundation
| kehittäjä      = Guido van Rossum
| kehittäjä      = Guido van Rossum
| moottori        =  
| moottori        =  
| ensijulkaisu    = 1990
| ensijulkaisu    = 0.9.0 / helmmikuuta 1991
| vakaaversio    = 3.10.4  
| vakaaversio    = 3.10.4  
| vakaapvm        = [https://www.python.org/downloads/release/python-3104/ 24. maaliskuuta 2022]
| vakaapvm        = [https://www.python.org/downloads/release/python-3104/ 24. maaliskuuta 2022]
Rivi 23: Rivi 23:
| lähdekoodi      = [https://github.com/python github.com/python]
| lähdekoodi      = [https://github.com/python github.com/python]
}}
}}
'''Python''' on korkean tason ohjelmointikieli, joka on kehitetty olio-ohjelmoinnin periaatteita toteuttavaksi. Se on erityisen helppo oppia, mutta taipuu myös suurempiin projekteihin. Siihen on saatavissa ulkoisia moduuleita ja kirjastoja. Python on tulkattava. Nvidian grafiikkapiirien [[CUBA]]-ohjelmonti on mahdollista tehdä Pythonilla, joten laskenta voidaan antaa grafiikkapiirien suoritettavaksi.


==Moduulit==
'''Python''' on korkean tason, tulkattava ja moniparadigmainen ohjelmointikieli,
*<tt>python-pip</tt> - Moduulien asennusohjelma
joka soveltuu niin komentoriviskripteihin, automaatioon, palvelinohjelmointiin,  
*<tt>Math</tt> - Matemaattiset laskutoimitukset
tieteelliseen laskentaan kuin graafisiin sovelluksiin. Python on erityisen
*<tt>Random</tt> - Arvontaluvut ja satunnaisluvut
suosittu Linux-järjestelmissä, ja monet jakelut sisältävät sen valmiiksi.
*<tt>Tkinter</tt> - Graafiset käyttöliittymät
*<tt>Os</tt> - Käyttöjärjestelmän palvelut
*<tt>Picle</tt> - Rakenteisen tiedon tallentaminen ja lukeminen
*<tt>Time</tt> -Ajanotto, kellonaika, kalenteri
*<tt>Sys</tt> - Järjestelmän palvelut
*<tt>Zipfile</tt> - [[zip]]-paketit


===Lisäkirjastot===
Pythonin kehitystä johtaa Python Software Foundation ja kielen alkuperäinen
*[[wxPython]] - Graafiset käyttöliittymät
kehittäjä on Guido van Rossum.
*[[pyGame]] - Peliohjelmointimoduuli
*[[pygame_sdl2]] - Peliohjelmointimoduuli [[SDL2]]-ohjelmoitirajapinnalla.


== Käyttö ==
== Ominaisuudet ==
Pythonia voi opetella kirjoittamalla koodia suoraan Python-tulkkiin (kunhan se on asennettu [[Paketinhallintajärjestelmä|paketinhallinnasta]]):
* Tulkattava ja dynaamisesti tyypitetty
$ python
* Moniparadigmainen (olio-, funktio- ja proseduraalinen ohjelmointi)
>>> print("linux.fi")
* Laaja standardikirjasto
linux.fi
* Selkeä syntaksi ja luettavuus
* Laajennettavissa tuhansilla lisäkirjastoilla (PyPI)
* Erinomainen tuki Linux-ympäristöissä


Yleensä ohjelmat kannattaa kuitenkin tallentaa tiedostoon, jonka tiedostopääte on yleensä <tt>.py</tt>:
== Python Linuxissa ==
<syntaxhighlight lang=python>
=== Asennus ===
#!/usr/bin/env python
Useimmissa Linux-jakeluissa Python 3 on valmiina. Tarvittaessa sen voi asentaa:
# ohjelma.py
 
for i in range(3):
Debian/Ubuntu
    print(i)
<syntaxhighlight lang="bash">
sudo apt install python3 python3-pip
</syntaxhighlight>
 
Fedora
<syntaxhighlight lang="bash">
sudo dnf install python3 python3-pip
</syntaxhighlight>
 
Arch Linux
<syntaxhighlight lang="bash">
sudo pacman -S python python-pip
</syntaxhighlight>
 
=== Python-tulkin käyttö ===
Interaktiivinen tulkki:
<syntaxhighlight lang="bash">
python3
>>> print("Hei Linux.fi!")
</syntaxhighlight>
 
Python-tiedoston suorittaminen:
<syntaxhighlight lang="python">
#!/usr/bin/env python3
print("Hei!")
</syntaxhighlight>
 
Ohjelmalle on annettava suoritusoikeudet.
<syntaxhighlight lang="bash">
chmod +x ohjelma.py
./ohjelma.py
</syntaxhighlight>
 
== Standardikirjasto ==
Pythonin mukana tulee laaja ja monipuolinen standardikirjasto, joka kattaa
tiedostojen käsittelyn, prosessit, verkon, tietotyypit, sarjallistamisen,
komentorivityökalut ja paljon muuta. Alla on yleisesti käytettyjä ja
Linux-ympäristössä hyödyllisiä moduuleita ryhmiteltynä aihealueittain.
 
=== Tiedostot ja käyttöjärjestelmä ===
* <tt>os</tt> – käyttöjärjestelmän palvelut, tiedostot, prosessit ja ympäristömuuttujat
* <tt>pathlib</tt> – tiedostopolkujen käsittely oliopohjaisesti (suositeltava vaihtoehto <tt>os.path</tt>-moduulille)
* <tt>shutil</tt> – tiedostojen ja hakemistojen kopiointi, siirto ja poistaminen
* <tt>stat</tt> – tiedostojen tilatiedot
* <tt>tempfile</tt> – väliaikaistiedostot ja -hakemistot
 
=== Prosessit ja komentorivi ===
* <tt>sys</tt> – Python-tulkin asetukset ja komentoriviparametrit
* <tt>argparse</tt> – komentoriviparametrien käsittely
* <tt>subprocess</tt> – ulkoisten komentojen suorittaminen
* <tt>logging</tt> – lokitus ja diagnostiikka
* <tt>venv</tt> – virtuaaliympäristöjen luonti
 
=== Aika ja päivämäärät ===
* <tt>time</tt> – ajanotto, viiveet ja aikaleimat
* <tt>datetime</tt> – päivämäärät ja kellonajat (suositeltavampi ja monipuolisempi kuin <tt>time</tt>)
* <tt>calendar</tt> – kalenteritoiminnot
 
=== Data, tietotyypit ja sarjallistaminen ===
* <tt>json</tt> – JSON-tiedostojen käsittely
* <tt>pickle</tt> – Python-olioiden sarjallistaminen ja tallennus
* <tt>csv</tt> – CSV-tiedostojen luku ja kirjoitus
* <tt>sqlite3</tt> – sisäänrakennettu SQLite-tietokanta
* <tt>dataclasses</tt> – helppo tapa määritellä tietorakenteita (Python 3.7+)
 
=== Matematiikka ja satunnaisuus ===
* <tt>math</tt> – matemaattiset funktiot ja laskutoimitukset
* <tt>statistics</tt> – perus tilastolliset laskut
* <tt>random</tt> – satunnaislukujen generointi ja arvonnat
* <tt>fractions</tt> – rationaaliluvut
* <tt>decimal</tt> – tarkka desimaalilaskenta
 
=== Verkko ja protokollat ===
* <tt>socket</tt> – matalan tason verkkoyhteydet
* <tt>http.client</tt> – HTTP-yhteydet
* <tt>urllib</tt> – URL-käsittely ja verkkopyynnöt
* <tt>ipaddress</tt> – IPv4- ja IPv6-osoitteiden käsittely
 
=== Pakkaus ja arkistointi ===
* <tt>zipfile</tt> – ZIP-pakettien luonti ja purku
* <tt>tarfile</tt> – TAR-arkistot
* <tt>gzip</tt> – gzip-pakkaus
 
=== Graafiset käyttöliittymät ===
* <tt>tkinter</tt> – Pythonin mukana tuleva yksinkertainen käyttöliittymäkirjasto
 
== Suositut lisäkirjastot ==
* requests – HTTP-kyselyt
* numpy, scipy – numeerinen laskenta
* pandas – taulukkomuotoinen data
* matplotlib, seaborn – visualisointi
* pytest – testaus
* pygame – peliohjelmointi
* PyQt, GTK (PyGObject) – graafiset käyttöliittymät
* pytorch, tensorflow – koneoppiminen
 
== Suositut graafiset käyttöliittymät ==
Pythonilla voidaan toteuttaa graafisia käyttöliittymiä useilla eri kirjastoilla.
Linux-ympäristöissä suosituimpia ovat:
* [[GTK]] (PyGObject) – GNOME-ympäristön käyttämä kirjasto; hyvä valinta natiivin Linux-sovelluksen rakentamiseen.
* [[Qt]] (PyQt / PySide) – monialustainen ja laaja käyttöliittymäkirjasto, joka soveltuu sekä kevyisiin että vaativiin sovelluksiin.
* Tkinter – Pythonin mukana tuleva yksinkertainen käyttöliittymäkirjasto, joka on helppo aloittelijoille ja pieniin työkaluihin.
* customtkinter – Tkinterin modernisoitu versio, joka tarjoaa tumman teeman, nykyaikaiset widgetit ja paremman ulkoasun ilman ulkoisia riippuvuuksia.
* Kivy – suunniteltu kosketusnäytöille ja monialustaisiin sovelluksiin (Linux, Windows, Android, iOS).
* wxPython – natiivikomponentteja hyödyntävä kirjasto, joka toimii hyvin useilla alustoilla.
* Dear PyGui – moderni ja nopea Immediate Mode -käyttöliittymäkirjasto, joka soveltuu erityisesti työkaluohjelmiin ja visualisointeihin.
* LexGUI (lex) – kevyt ja moderni käyttöliittymäkirjasto, joka tarjoaa yksinkertaisen API:n ja tyylikkään ulkoasun; sopii pieniin työkaluihin ja prototyyppeihin.
* Flet – moderni ja monialustainen käyttöliittymäkirjasto, joka mahdollistaa web-, desktop- ja mobiilisovellusten rakentamisen Pythonilla ilman HTML-, CSS- tai JavaScript-osaamista. Sovellukset käyttävät Flutterin komponentteja, ja ne voidaan ajaa paikallisesti tai palvelimelta käsin.
 
Nämä kirjastot ovat saatavilla useimpien Linux-jakeluiden pakettivarastoista
tai Pythonin pakettivarastosta ([[PyPI]]).
 
=== Virtuaaliympäristön luominen ja käyttö ===
Virtuaaliympäristö (''virtual environment'', venv) on Pythonin työkalu,
jolla projektikohtaiset kirjastot ja riippuvuudet voidaan eristää muusta
järjestelmästä. Tämä on erityisen tärkeää Linux-järjestelmissä, joissa
jakelun omat Python-paketit voivat olla eri versioisia kuin kehityksessä
tarvittavat.
 
Virtuaaliympäristöjen käyttö on suositeltavaa, koska:
Projektit pysyvät erillään toisistaan – eri projektit voivat käyttää eri versioita samoista kirjastoista ilman ristiriitoja.
* Järjestelmän Python pysyy puhtaana – järjestelmän omia työkaluja (esim. paketinhallinta) ei rikota asentamalla globaaleja paketteja.
* Toistettavuus paranee – projektin riippuvuudet voidaan määritellä tarkasti (esim. ''requirements.txt''), mikä helpottaa kehitystä ja julkaisemista.
* Turvallisuus paranee – eristetty ympäristö vähentää riskiä, että kolmannen osapuolen kirjastot vaikuttaisivat järjestelmätasoisiin komentoihin tai palveluihin.
 
Virtuaaliympäristö luodaan komennolla::
<syntaxhighlight lang="bash">
python3 -m venv venv
</syntaxhighlight>
 
Tämä luo hakemiston ''venv'', joka sisältää projektikohtaisen Python-tulkin ja
kirjastot. Virtuaaliympäristö otetaan käyttöön aina ennen projektin komentoja:
 
<syntaxhighlight lang="bash">
source venv/bin/activate
</syntaxhighlight>
 
Kun ympäristö on aktivoitu, komentorivin alkuun ilmestyy yleensä ympäristön nimi
(esimerkiksi ''(venv)''), ja kaikki ''pip''-asennukset kohdistuvat vain tähän
ympäristöön.
 
Virtuaaliympäristö poistetaan käytöstä komennolla:
<syntaxhighlight lang="bash">
deactivate
</syntaxhighlight>
 
Virtuaaliympäristö kannattaa pitää versionhallinnan ulkopuolella, koska se sisältää
paljon automaattisesti generoituja tiedostoja ja riippuvuuksia, jotka voidaan
uudelleen luoda tarpeen mukaan. Ympäristön hakemisto (esimerkiksi ''venv'')
lisätään yleensä versionhallinnan ohituksiin, kuten ''.gitignore''-tiedostoon.
 
Esimerkki ''.gitignore''-tiedostosta.
<syntaxhighlight lang="bash">
venv/
__pycache__/
</syntaxhighlight>
</syntaxhighlight>


Jonka jälkeen ohjelma ajettaisiin komennolla
== Python Linux-järjestelmätyökaluissa ==
$ python ohjelma.py
Pythonia käytetään laajasti Linux-työkaluissa ja infrastruktuurissa, kuten:
Jolloin konsoliin tulostuisi
* [[Ansible]]
0
* Useat jakelujen paketinhallintaskriptit
1
* [[GNOME]]- ja [[KDE]]-projektien apuohjelmat
2
* Järjestelmänhallinnan komentorivityökalut
Pythonilla kirjoitetun ohjelman voi ajaa myös suoraan komennolla <tt>./ohjelma.py</tt>, jos tiedoston ensimmäisellä rivillä kerrotaan, että se on tulkattava Python-tulkilla:
#!/usr/bin/env python
Tällöin tiedostolla on oltava [[chmod|suoritusoikeudet]].


==Graafisia Python käyttöliittymiä==
== Kehitystyökalut ==
* [[PyCrust]] on Python Shell-käyttöliittymä.
* [[VS Code]] – laaja Python-tuki
* [[PyShell]] on Python Shell-käyttöliittymä.
* [[PyCharm]]
* [[PyPE]] on koodimuokkain.
* [[Geany]]
* [[Spe]] [http://pythonide.stani.be/] on Python koodimuokkain.
* [[Kate]], [[Gedit]], [[Mousepad]]
* [[IDLE]] – Pythonin mukana tuleva editori


== Katso myös ==
== Katso myös ==
*[[Perl]]
* [[Perl]]
*[[Ruby]]
* [[Ruby]]
*[[CUBA]]
* [[Bash]]
* [[Lua]]


==Aiheesta muualla==
== Aiheesta muualla ==
*[[wikipedia:fi:Python|Python-artikkeli Wikipediassa]]
* [https://www.python.org/ www.python.org]
*[http://www.it.lut.fi/kurssit/08-09/CT20A0200/materiaali/Python_opas_2008.pdf Lappeenrannan teknillisen yliopiston Python-opas]
* [https://docs.python.org/3/ docs.python.org]
*[http://www.ohjelmointiputka.net/opas.php?tunnus=python Ohjelmointiputkan Python-opas]
* [https://automatetheboringstuff.com/ automatetheboringstuff.com]
*[http://www.ibiblio.org/pub/multimedia/video/obp/IntroducingPython.mpg Pythonin esittelyvideo]
* [https://realpython.com/ realpython.com]
*[http://www.diveintopython.org/ Dive Into Python] -kirja, luettavissa verkossa


{{Ohjelmointikielet}}
{{Ohjelmointikielet}}
[[Luokka:Kehitystyökalut]]
[[Luokka:Kehitystyökalut]]
[[Luokka:Oliopohjaiset ohjelmointikielet]]
[[Luokka:Oliopohjaiset ohjelmointikielet]]
Noudettu kohteesta ”https://www.linux.fi/wiki/Python