Python

Osnova

  • Prečo Python a kde sa používa
  • Charakter jazyka: interpretovaný, dynamicky typovaný, objektový
  • Ekosystém a vývojové prostredie
  • Syntax, premenné, funkcie a základné typy
  • Reťazce, vstup a 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)
  • Vedecké výpočty – v spojení s výkonnými knižnicami (NumPy, SciPy)
  • Umelá inteligencia a machine learning (TensorFlow, PyTorch)
  • Náhrada Matlabu v mnohých technických oblastiach
  • 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

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.

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

Syntax jazyka

Python je známy svojou jednoduchou a čitateľnou syntaxou.

Premenné:

x = 10
meno = "Python"

Funkcie

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

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

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ť:

def add(a: int, b: int) -> int:
    return a + b

Výhody:

  • Lepšia podpora v IDE
  • Jednoduchšie ladenie
  • Lepšia dokumentácia

Konverzia typov

vek = int(input("Zadaj vek: "))
print(vek + 1)

Ďalšie konverzie:

  • int()
  • float()
  • str()

Reťazce (str) v Pythone

Reťazec je sekvencia znakov.

text = "Ahoj svet"
  • nemenný (immutable)
  • indexovateľný
  • podporuje množstvo operácií

Indexovanie

text = "Python"

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

Základné operácie

a = "Hello"
b = "World"

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

Slicing

text = "Python"
print(text[0:3])  # Pyt

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"))

Formátovanie reťazcov

f-string (Šablóna)

meno = "Ján"
vek = 25

print(f"{meno} má {vek} rokov")

Starší spôsob

print("{} má {} rokov".format(meno, vek))

Štandardný vstup

import sys

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

Práca so súbormi

'with' vytvára nový kontext

with open("subor.txt", "r") as f:
    obsah = f.read()
    print(obsah)

open funguje podobne ako v C

  • "r" – čítanie (read)
  • "w" – zápis (write)
  • "a" – pripísanie (append)

Kolekcie

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

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"])

Iterácia cez dict

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

Set (množina)

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")

List Comprehension

Elegantný spôsob vytvárania zoznamov.

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]

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}

Prečo používať comprehension?

  • kratší a čitateľnejší kód
  • často rýchlejší než klasický cyklus
  • štandard v modernom Pythone

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

import math

print(math.pi)
from math import sqrt

print(sqrt(16))
import math as m

print(m.sin(0))

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

Č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

Použitie nainštalovaného balíčka:

import requests

Základné príkazy 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

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.

Literatúra

Deep Dive into Python, prvá polovica

Zdroje na prečítanie

  • 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?