Python

Muuttujat ja tyypit

nimi = "Matti"          # str
ika = 30                  # int
hinta = 9.95               # float
aktiivinen = True          # bool
data = None

print(type(ika))          # <class 'int'>

Merkkijonot

nimi = "Maailma"
print(f"Hei, {nimi}!")           # f-string, suositeltu tapa
print("Hei, " + nimi + "!")      # yhdistäminen
print(nimi.upper())
print(len(nimi))
print(nimi.replace("a", "e"))
teksti = """
Monirivinen
merkkijono
"""

Listat, tuplet, sanakirjat, joukot

lista = ["omena", "banaani", "paaryna"]
lista.append("appelsiini")
lista[0]                    # "omena"
lista[-1]                   # viimeinen alkio
lista[1:3]                  # osaluettelo (slice)

tuple_ = (1, 2, 3)          # muuttumaton

sanakirja = {"nimi": "Matti", "ika": 30}
sanakirja["kaupunki"] = "Helsinki"
sanakirja.get("puuttuva", "oletus")

joukko = {1, 2, 3}          # ei kaksoiskappaleita, ei järjestystä

Listakomprehensiot

neliot = [x**2 for x in range(10)]
parilliset = [x for x in range(20) if x % 2 == 0]
sanakirja_comp = {x: x**2 for x in range(5)}

Ehdot ja silmukat

if ika >= 18:
    print("Täysi-ikäinen")
elif ika >= 13:
    print("Teini")
else:
    print("Lapsi")

for alkio in lista:
    print(alkio)

for i, alkio in enumerate(lista):
    print(i, alkio)

i = 0
while i < 5:
    i += 1

Funktiot

def tervehdi(nimi: str, tervehdys: str = "Hei") -> str:
    return f"{tervehdys}, {nimi}!"

print(tervehdi("Maailma"))
print(tervehdi("Maailma", tervehdys="Moi"))

# *args ja **kwargs mielivaltaiselle määrälle argumentteja
def summaa(*luvut):
    return sum(luvut)

Luokat

class Kayttaja:
    def __init__(self, nimi: str):
        self.nimi = nimi

    def tervehdi(self) -> str:
        return f"Hei, olen {self.nimi}"

kayttaja = Kayttaja("Maija")
print(kayttaja.tervehdi())

Poikkeukset

try:
    tulos = 10 / 0
except ZeroDivisionError as e:
    print(f"Virhe: {e}")
except Exception as e:
    print(f"Muu virhe: {e}")
else:
    print("Ei virheitä")
finally:
    print("Suoritetaan aina")

Tiedostojen käsittely

with open("tiedosto.txt", "r") as f:
    sisalto = f.read()

with open("tiedosto.txt", "w") as f:
    f.write("Uusi sisältö\n")

with-lause sulkee tiedoston automaattisesti, myös virhetilanteessa.

Moduulit ja paketit

import os
from datetime import datetime
import numpy as np           # tavanomainen lyhennealias

if __name__ == "__main__":
    print("Ajetaan suoraan skriptinä, ei importattuna")

Virtuaaliympäristöt ja paketit

python3 -m venv .venv
source .venv/bin/activate      # macOS/Linux
.venv\Scripts\activate         # Windows

pip install paketti
pip freeze > requirements.txt
pip install -r requirements.txt

Hyödyllisiä sisäänrakennettuja funktioita

len(lista)
sorted(lista)
sum(luvut)
max(luvut) / min(luvut)
zip(lista1, lista2)
map(str, lista)
filter(lambda x: x > 0, luvut)