Python
| Python | |
|---|---|
| Paradigma | oliopohjainen |
| Tyypitys | vahva, staattinen |
| Evaluointitapa | innokas |
| Suoritusmalli | tulkattava |
| Muistinhallinta | automaattinen |
| Tekijä(t) | Python Software Foundation |
| Kehittäjä(t) | Guido van Rossum |
| Ensijulkaisu | 0.9.0 / helmmikuuta 1991 |
| Vakaa versio | 3.10.4 / 24. maaliskuuta 2022 |
| Kehitysversio | 3.11.0a6 / 7. maaliskuuta 2022 |
| Tyyppi | ohjelmointikieli, kehitystyökalut |
| Lisenssi | GPL [1] |
| Kotisivu | python.org |
| Lähdekoodi | 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
Asennus
Useimmissa Linux-jakeluissa Python 3 on valmiina. Tarvittaessa sen voi asentaa:
- Debian/Ubuntu
sudo apt install python3 python3-pip
- Fedora
sudo dnf install python3 python3-pip
- Arch Linux
sudo pacman -S python python-pip
Python-tulkin käyttö
Interaktiivinen tulkki:
python3
>>> print("Hei Linux.fi!")
Python-tiedoston suorittaminen:
#!/usr/bin/env python3
print("Hei!")
Ohjelmalle on annettava suoritusoikeudet.
chmod +x ohjelma.py
./ohjelma.py
Standardikirjasto
Pythonin mukana tulee laaja valikoima moduuleita. Hyödyllisiä Linux-käytössä:
- os – käyttöjärjestelmätoiminnot
- sys – tulkin asetukset ja argumentit
- pathlib – tiedostopolut oliopohjaisesti
- subprocess – ulkoisten komentojen suorittaminen
- json – JSON-tiedostojen käsittely
- argparse – komentoriviparametrit
- 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::
python3 -m venv venv
Tämä luo hakemiston venv, joka sisältää projektikohtaisen Python-tulkin ja kirjastot. Virtuaaliympäristö otetaan käyttöön aina ennen projektin komentoja:
source venv/bin/activate
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:
deactivate
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.
venv/
__pycache__/
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
Aiheesta muualla
| | |
| Käännettävät | Assembly | C | C++ | Go | Haxe | Haskell | Java | Pascal |
|---|---|
| Tulkattavat | Python | Perl | PHP | Ruby |
| -skriptikielet | Lua | Bash |
| GPGPU | OpenCL |
| muut | GLSL |