Python

Osnova

  • Čo je Python
  • Syntax
  • premenné, funkcie a základné typy
  • Reťazce, vstup a výstup, práca so súbormi
  • Kolekcie, iterácia a comprehension
  • Moduly, balíčky, pip a virtuálne prostredia

Prečo sa učiť Python?

Python patrí medzi najpopulárnejšie programovacie jazyky na svete. Je obľúbený najmä vďaka svojej jednoduchej syntaxi, čitateľnosti a širokému spektru využitia.

Oblasti použitia:

  • Webové aplikácie (Django, Flask)
  • Príprava a analýza dát – v spojení s výkonnými knižnicami (NumPy, SciPy), náhrada Matlabu
  • Umelá inteligencia a machine learning (TensorFlow, PyTorch)
  • Správa operačných systémov a automatizácia (skripty, DevOps)
  • Rýchle prototypovanie aplikácií
  • Robotika a vývoj hier

Čo je to Python?

Python je:

  • vysokoúrovňový programovací jazyk
  • interpretovaný jazyk
  • dynamicky (slabo) typovaný jazyk
  • navrhnutý s dôrazom na čitateľnosť kódu

Interpretovaný jazyk vs. prekladaný jazyk

  • Interpretovaný jazyk (Python) Kód sa vykonáva riadok po riadku pomocou interpretera.

  • Prekladaný jazyk (C, C++) Kód sa najprv preloží do strojového kódu a potom spúšťa.

  • 👉 Výhoda Pythonu: rýchly vývoj

  • 👉 Nevýhoda: "nižší" výkon oproti prekladaným jazykom

Lepidlo na všetko

V Pythone vieme jednoducho zavolať knižnicu napísanú v C/C++ a využiť jej rýchlosť.

  • jednoduchý a čitateľný kód v Pythone pre celý program
  • rýchlosť a výkon v C/C++ pre náročné časti programu

Syntax jazyka

meno = "Python"

def pozdrav(meno):
    return f"Ahoj {meno}"

pozdrav(meno)

Ďalšie čítanie: Dive Into Python 3 – Your First Python Program

Slabo typovaný vs. silno typovaný jazyk

Python je dynamicky typovaný jazyk, čo znamená:

  • typ premennej sa určuje za behu programu

Údajové typy

Základné typy:

  • int – celé čísla
  • float – desatinné čísla
  • bool – pravda/nepravda
  • str – reťazce

Ďalšie čítanie: Dive Into Python 3 – Native Datatypes

V Pythone je všetko objekt

  • Python používa referencie – premenné sú odkazy na objekty
  • del – odstránenie premennej
  • Odovzdávanie objektov: referenciou (nie hodnotou)

Python automaticky spravuje pamäť pomocou garbage collectora:

  • uvoľňuje pamäť, ktorú už program nepoužíva
  • programátor sa nemusí starať o manuálne uvoľňovanie pamäte

Typové anotácie (type hints)

Voliteľné označenie typov pre lepšiu čitateľnosť:

  • Lepšia podpora v IDE
  • Jednoduchšie ladenie
  • Lepšia dokumentácia
def add(a: int, b: int) -> int:
    c : int = 5
    return a + b + c

https://typing.python.org/en/latest/spec/annotations.html

Reťazce (str) v Pythone

Reťazec je nemenná sekvencia znakov UTF8.

  • Jeden znak môže mať viac bajtov.
text = "Ahoj slniečko"

Základné operácie

a = "Hello"
b = "World"

print(a + " " + b)   # spájanie
print(a * 3)         # opakovanie

Indexovanie

text = "Python"

print(text[0])    # P
print(text[-1])   # n
print(len(text))  # dĺžka
print(text[0:3])  # Slicing

Konverzia reťazcov na čísla a naopak

vek = input("Zadaj vek: ") # vek je reťazec
print(f"Tvoj vek je {vek}") # šablóna nového reťazca
vek = int(vek)  # konverzia na celé číslo
print(f"Tvoj vek o rok bude {vek + 1}")

Užitočné metódy

V Pythone je všetko objekt - ku objektom existujú metódy.

text = "  python "

print(text.upper())     # PYTHON
print(text.lower())     # python
print(text.strip())     # odstráni medzery
print(text.replace("p", "P"))

https://docs.python.org/3/library/stdtypes.html#string-methods

Dive Into Python 3 – Strings

Štandardný vstup

Postupne načítanie riadkov zo štandardného vstupu (klávesnica alebo presmerovanie) až do konca súboru.

import sys

for line in sys.stdin:
    print("Zapísal si:")
    print(line.rstrip())

Práca so súbormi

'with' vytvára nový kontext. Kontext sa automaticky uzavrie po skončení bloku.

open funguje podobne ako v C

  • "r" – čítanie (read)
  • "w" – zápis (write)
  • "a" – pripísanie (append)
with open("subor.txt", "r") as f:
    for line in f:
        print(line.rstrip())

Ďalšie čítanie: Dive Into Python 3 – Files

Kolekcie

Kolekcie slúžia na uchovávanie viacerých hodnôt v jednej premennej.

Ďalšie čítanie: Dive Into Python 3 – Native Datatypes

Základné typy:

  • zoznam (list) – usporiadaný, meniteľný
  • slovník (dict) – dvojice kľúč → hodnota
  • množina (set) – unikátne prvky

List (zoznam)

Zoznam je usporiadaná kolekcia prvkov.

numbers = [1, 2, 3, 4]
names = ["Anna", "Peter", "Ján"]

Operácie:

numbers.append(5)      # pridanie
numbers.remove(2)      # odstránenie
print(numbers[0])      # prístup k prvku

Slovník (dict)

Slovník ukladá dáta ako dvojice kľúč → hodnota.

person = {
    "meno": "Ján",
    "vek": 25
}
print(person["meno"])

Množina (set)

Množina obsahuje iba unikátne prvky.

nums = {1, 2, 2, 3}
print(nums)  # {1, 2, 3}

Operácie s množinami:

a = {1, 2, 3}
b = {2, 3, 4}

print(a & b)  # prienik → {2, 3}
print(a | b)  # zjednotenie → {1, 2, 3, 4}

Kolekcie je možné prechádzať

for n in numbers:
    print(n)

for meno,vyska in ludia.items():
   print(f"{meno} ma {vyska} cm")

Prechádzanie slovníka

for key, value in person.items():
    print(key, value)

List Comprehension

  • kratší a čitateľnejší kód
squares = [x**2 for x in range(5)]

Výsledok:

[0, 1, 4, 9, 16]

S podmienkou:

even = [x for x in range(10) if x % 2 == 0]

Ďalšie čítanie: Dive Into Python 3 – Comprehensions

Dict Comprehension

Podobné ako list comprehension, ale pre slovníky.

squares = {x: x**2 for x in range(5)}

Výsledok:

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Ďalšie čítanie: Dive Into Python 3 – Comprehensions

Moduly a balíčky

Python umožňuje organizovať kód pomocou:

  • modulov (jednotlivé súbory)
  • balíčkov (adresáre s modulmi)
import math
print(math.sqrt(16))

Spôsoby importovania

Jeden balíček môže obsahovať viacero modulov. Môžeme importovať celý balíček alebo len konkrétny modul.

Po importovaní je modul dostupný cez jeho názov ako globálna premenná

import math # celý balíček alebo modul
from math import sqrt # len konkrétnu funkciu z modulu alebo balíčka
import math as m # pridelím alias pre modul
from collections import Counter # import konkrétnej triedy z modulu
from os.path import join # Modul môže obsahovať viacero podmodulov, ktoré je možné importovať samostatne

Vlastný modul

Modul je obyčajný .py súbor.

Súbor utils.py:

def add(a, b):
    return a + b

Použitie v inom súbore:

from utils import add

print(add(2, 3))

Balíček

Balíček je adresár s viacerými modulmi.

project/
├── main.py
└── helpers/
    ├── __init__.py
    ├── math_utils.py
    └── text_utils.py

Import:

from helpers.math_utils import add

Ďalšie čítanie: Dive Into Python 3 – Packaging Python Libraries

Ekosystém jazyka Python

Python nie je len jazyk, ale aj rozsiahly ekosystém nástrojov a knižníc. Obsahuje tisíce balíčkov, ktoré riešia prakticky každý problém – od práce s dátami až po vývoj umelej inteligencie.

Čo je pip?

pip je správca balíčkov pre Python.

Používa sa na inštalovanie knižníc z Python Package Indexu (PyPI).

python -m pip install requests

Základné príkazy pip

Balíčky je možné zdieľať a inštalovať pomocou pip.

python -m pip install requests
python -m pip uninstall requests
python -m pip list
python -m pip show requests

Odporúčanie:

  • používať python -m pip, aby bolo jasné, ku ktorému Pythonu balíčky patria
  • neinštalovať balíčky globálne, ak pracujeme na projekte

Virtuálne prostredie

Virtuálne prostredie je oddelené miesto pre balíčky jedného projektu.

Prečo ho používať?

  • každý projekt môže mať vlastné verzie knižníc,
  • neznečisťujeme systémový Python,
  • projekt sa ľahšie prenáša medzi počítačmi.

Vytvorenie virtuálneho prostredia

python -m venv .venv

Aktivácia na Linuxe/macOS:

source .venv/bin/activate

Aktivácia vo Windows PowerShell:

.venv\Scripts\Activate.ps1

Inštalácia balíčkov do projektu

Po aktivovaní virtuálneho prostredia:

python -m pip install requests

Uloženie zoznamu závislostí:

python -m pip freeze > requirements.txt

Inštalácia závislostí v inom prostredí:

python -m pip install -r requirements.txt

Oficiálna dokumentácia

Ďalšie informácie a úplný referenčný manuál:

https://docs.python.org/3/

Typický postup v projekte

python -m venv .venv
source .venv/bin/activate
python -m pip install requests
python main.py

Štruktúra:

project/
├── .venv/
├── main.py
└── requirements.txt

Adresár .venv/ sa zvyčajne neukladá do gitu.

Vývojové prostredie – čo si nainštalovať?

  • pip – základný správca balíčkov
  • uv – moderný a rýchly správca prostredí a závislostí
  • Anaconda – distribúcia vhodná pre dátovú analýzu
  • Jupyter Notebook – interaktívne prostredie na experimentovanie
  • IPython – rozšírený interaktívny interpreter

Literatúra

  • Deep Dive into Python, prvá polovica
  • Oficiálny tutoriál Pythonu: https://docs.python.org/3/tutorial/
  • Dokumentácia štandardnej knižnice: https://docs.python.org/3/library/
  • Python Packaging User Guide: https://packaging.python.org/
  • PEP 8 – štýl písania Python kódu: https://peps.python.org/pep-0008/
  • Automate the Boring Stuff with Python: https://automatetheboringstuff.com/
  • Dive Into Python 3: https://diveintopython3.net/
Reload?