Ero sivun ”Python” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p Malline |
|||
| (13 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä) | |||
| Rivi 1: | Rivi 1: | ||
{{Perustietoa}} | {{Perustietoa}} | ||
{{Ohjelmointikieli | {{Ohjelmointikieli | ||
| nimi=Python | | nimi = Python | ||
| paradigma=oliopohjainen | | logo = [[Tiedosto:Python-logo.svg|144px]] | ||
| tyypitys=vahva, staattinen | | paradigma = oliopohjainen | ||
| suoritusmalli=tulkattava | | tyypitys = vahva, staattinen | ||
| muistinhallinta= | | suoritusmalli = tulkattava | ||
| vakaaversio=3. | | evaluointitapa = innokas | ||
| vakaapvm=[https://www.python.org/downloads/release/python- | | muistinhallinta = [[wikipedia:fi:Automaattinen_roskienkeräys|automaattinen]] | ||
| | | tekijä = Python Software Foundation | ||
| kotisivu=[https://www.python.org/ python.org] | | kehittäjä = Guido van Rossum | ||
| lähdekoodi=[https://github.com/python github.com/python] | | moottori = | ||
| ensijulkaisu = 0.9.0 / helmmikuuta 1991 | |||
| vakaaversio = 3.10.4 | |||
| vakaapvm = [https://www.python.org/downloads/release/python-3104/ 24. maaliskuuta 2022] | |||
| kehitysversio = 3.11.0a6 | |||
| kehityspvm = 7. maaliskuuta 2022 | |||
| ohjelmoitu = | |||
| käyttöliittymä = | |||
| tyyppi = ohjelmointikieli, kehitystyökalut | |||
| lisenssi = [[GPL]] [https://www.python.org/download/releases/3.4.0/license/] | |||
| kotisivu = [https://www.python.org/ python.org] | |||
| lähdekoodi = [https://github.com/python github.com/python] | |||
}} | }} | ||
'''Python''' on korkean tason, tulkattava ja moniparadigmainen ohjelmointikieli, | |||
joka soveltuu niin komentoriviskripteihin, automaatioon, palvelinohjelmointiin, | |||
tieteelliseen laskentaan kuin graafisiin sovelluksiin. Python on erityisen | |||
suosittu Linux-järjestelmissä, ja monet jakelut sisältävät sen valmiiksi. | |||
Pythonin kehitystä johtaa Python Software Foundation ja kielen alkuperäinen | |||
kehittäjä on Guido van Rossum. | |||
== | == Ominaisuudet == | ||
* Tulkattava ja dynaamisesti tyypitetty | |||
* Moniparadigmainen (olio-, funktio- ja proseduraalinen ohjelmointi) | |||
* Laaja standardikirjasto | |||
* Selkeä syntaksi ja luettavuus | |||
* Laajennettavissa tuhansilla lisäkirjastoilla (PyPI) | |||
* Erinomainen tuki Linux-ympäristöissä | |||
== Python Linuxissa == | |||
<syntaxhighlight lang=python> | === Asennus === | ||
#!/usr/bin/env | Useimmissa Linux-jakeluissa Python 3 on valmiina. Tarvittaessa sen voi asentaa: | ||
Debian/Ubuntu | |||
<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> | ||
== Python Linux-järjestelmätyökaluissa == | |||
Pythonia käytetään laajasti Linux-työkaluissa ja infrastruktuurissa, kuten: | |||
* [[Ansible]] | |||
* Useat jakelujen paketinhallintaskriptit | |||
* [[GNOME]]- ja [[KDE]]-projektien apuohjelmat | |||
* Järjestelmänhallinnan komentorivityökalut | |||
== | == 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]] | ||
* [[Bash]] | |||
* [[Lua]] | |||
==Aiheesta muualla== | == Aiheesta muualla == | ||
*[ | * [https://www.python.org/ www.python.org] | ||
* [https://docs.python.org/3/ docs.python.org] | |||
*[ | * [https://automatetheboringstuff.com/ automatetheboringstuff.com] | ||
*[ | * [https://realpython.com/ realpython.com] | ||
*[ | |||
{{Ohjelmointikielet}} | {{Ohjelmointikielet}} | ||
[[Luokka:Kehitystyökalut]] | [[Luokka:Kehitystyökalut]] | ||
[[Luokka:Oliopohjaiset ohjelmointikielet]] | [[Luokka:Oliopohjaiset ohjelmointikielet]] | ||