Ero sivun ”Python” versioiden välillä

Siirry navigaatioon Siirry hakuun
Lisätty kirjastoja listaan ja lisätty linkkejä. Sekä muita pieniä parannuksia.
Vähän suurempi päivitys
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 [[CUDA]]-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 käyttäen helppoa [[Tcl|Tcl:n]] Tk-teknologiaa
*<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.
*[[pylint]] - lint tyylinen koodintarkistusohjelma Pythonille
*[[numpy]] - kirjasto numeerista laskentaa varten
*[[scipy]] - kirjasto tieteellistä ohjelmointia varten
*[[matplotlib]] - kirjasto graafien tekemistä varten
*[[pytorch]] ja [[tensorflow]] - kirjastoja tekoälyä ja koneoppimista varten


== 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>
</syntaxhighlight>


Jonka jälkeen ohjelma ajettaisiin komennolla
== Standardikirjasto ==
$ python ohjelma.py
Pythonin mukana tulee laaja valikoima moduuleita. Hyödyllisiä Linux-käytössä:
Jolloin konsoliin tulostuisi
* '''os''' – käyttöjärjestelmätoiminnot
0
* '''sys''' – tulkin asetukset ja argumentit
1
* '''pathlib''' – tiedostopolut oliopohjaisesti
2
* '''subprocess''' – ulkoisten komentojen suorittaminen
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:
* '''json''' – JSON-tiedostojen käsittely
#!/usr/bin/env python
* '''argparse''' – komentoriviparametrit
Tällöin tiedostolla on oltava [[chmod|suoritusoikeudet]].
* '''logging''' – lokitus
* '''venv''' – virtuaaliympäristöt
 
== 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;
  soveltuu sekä kevyisiin että vaativiin sovelluksiin.
* '''Tkinter''' – Pythonin mukana tuleva yksinkertainen käyttöliittymäkirjasto;
  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,
  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.
 
Esimmerkki ''.gitignore''-tiedostosta.
<syntaxhighlight lang="bash">
venv/
__pycache__/
</syntaxhighlight>


==Graafisia Python käyttöliittymiä==
== Python Linux-järjestelmätyökaluissa ==
* [[PyCrust]] on Python Shell-käyttöliittymä.
Pythonia käytetään laajasti Linux-työkaluissa ja infrastruktuurissa, kuten:
* [[PyShell]] on Python Shell-käyttöliittymä.
* [[Ansible]]
* [[PyPE]] on koodimuokkain.
* Useat jakelujen paketinhallintaskriptit
* [[Spe]] [http://pythonide.stani.be/] on Python koodimuokkain.
* [[GNOME]]- ja [[KDE]]-projektien apuohjelmat
* Järjestelmänhallinnan komentorivityökalut


Suurin osa [[Tekstieditori|tekstieditoreista]] sisältää tuen Pythonille.
== Kehitystyökalut ==
* '''[[VS Code]]''' – laaja Python-tuki
* '''[[PyCharm]]'''
* '''[[Geany]]'''
* '''[[Kate]]''', '''[[Gedit]]''', '''[[Mousepad]]'''
* '''[[IDLE]]''' – Pythonin mukana tuleva editori


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


==Aiheesta muualla==
== Aiheesta muualla ==
*[[wikipedia:fi:Python|Python-artikkeli Wikipediassa]]
* [https://www.python.org/ www.python.org]
*[https://ohjelmointi-24.mooc.fi Ilmainen Python 3 -verkkokurssi]
* [https://docs.python.org/3/ docs.python.org]
*[http://www.it.lut.fi/kurssit/08-09/CT20A0200/materiaali/Python_opas_2008.pdf Lappeenrannan teknillisen yliopiston Python-opas]
* [https://automatetheboringstuff.com/ automatetheboringstuff.com]
*[http://www.ohjelmointiputka.net/opas.php?tunnus=python Ohjelmointiputkan Python-opas]
* [https://realpython.com/ realpython.com]
*[http://www.ibiblio.org/pub/multimedia/video/obp/IntroducingPython.mpg Pythonin esittelyvideo]
*[http://www.diveintopython.org/ Dive Into Python] -kirja, luettavissa verkossa
*[https://automatetheboringstuff.com/ Automate The Boring Stuff] Toinen verkossa ilmaiseksi luettava Python-kirja
*[https://opensource.com/article/19/4/managing-python-packages Opas lisäkirjstojen ja pakettien hallinnasta Pythonissa]


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