doc. Ing. Daniel Hládek, PhD.
pip a virtuálne prostrediaPython 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.
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
V Pythone vieme jednoducho zavolať knižnicu napísanú v C/C++ a využiť jej rýchlosť.
meno = "Python"
def pozdrav(meno):
return f"Ahoj {meno}"
pozdrav(meno)
Ľahko čitateľný a úsporný kód.
Používa odsadenie namiesto zátvoriek.
Python je dynamicky typovaný jazyk, čo znamená:
Ďalšie čítanie: Dive Into Python 3 – Native Datatypes
Voliteľné označenie typov pre lepšiu čitateľnosť:
def add(a: int, b: int) -> int:
c : int = 5
return a + b + c
del – odstránenie premennejPython automaticky spravuje pamäť pomocou garbage collectora:
Užitočné funkcie, patriace ku objektom
text = " python "
print(text.upper()) # PYTHON
print(text.lower()) # python
print(text.strip()) # odstráni medzery
print(text.replace("p", "P"))
Reťazec je nemenná sekvencia znakov UTF8.
text = "Ahoj slniečko"
a = "Hello"
b = "World"
print(len(text)) # dĺžka - počet znakov, nie bajtov
print(a + " " + b) # spájanie
print(a * 3) # opakovanie
Každú postupnosť vieme prechádzať
text = "Python"
for c in text:
print(c)
V každej postupnosti vieme vyhľadávať.
if "y" in text:
print("y je v reťazci")
if "za" not in text:
print("za nie je v reťazci")
text = "Python"
print(text[0]) # P
print(text[-1]) # n
print(text[0:3]) # Pyt - Výrez
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}")
import sys
for line in sys.stdin:
print("Zapísal si:")
print(line.rstrip())
with automaticky uzavrie súboropen 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 slúžia na uchovávanie viacerých hodnôt v jednej premennej.
Ďalšie čítanie: Dive Into Python 3 – Native Datatypes
N-ticca je nemenná usporiadaná množina prvkov.
pair = (1, 2)
print(pair[0]) # prístup k prvku
Zoznam je usporiadaná množina prvkov.
numbers = [1, 2, 3, 4]
names = ["Anna", "Peter", "Ján"]
for n in numbers:
print(n)
# Enumerate generuje dvojice index → hodnota
for i,number in enumerate(numbers):
print(i, number)
numbers = [1, 2, 3, 4]
if 3 in numbers:
print("3 je v zozname")
names = ["Anna", "Peter", "Ján"]
if "Ján" not in names:
print("Ján nie je v zozname")
print(numbers[0]) # prístup k prvku
numbers.append(5) # pridanie
numbers.pop(0) # odstránenie prvého prvku
numbers.push(0) # pridanie na začiatok
numbers.sort() # zoradenie
squares = [x**2 for x in range(5)]
Výsledok:
[0, 1, 4, 9, 16]
even = [x for x in range(10) if x % 2 == 0]
Ďalšie čítanie: Dive Into Python 3 – Comprehensions
Slovník ukladá dáta ako dvojice kľúč → hodnota.
person = {
"meno": "Ján",
"vek": 25
}
print(person["meno"])
Funguje porobne ako pri zoznamoch.
# items() generuje dvojice kľúč → hodnota
for key, value in person.items():
print(key, value)
if "vek" in person:
print("Vek je:", person["vek"])
Podobné ako list comprehension, ale pre slovníky.
Príklad:
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
Množina obsahuje iba unikátne prvky.
nums = {1, 2, 2, 3}
print(nums) # {1, 2, 3}
a = {1, 2, 3}
b = {2, 3, 4}
print(a & b) # prienik → {2, 3}
print(a | b) # zjednotenie → {1, 2, 3, 4}
Python umožňuje organizovať kód pomocou:
import math
print(math.sqrt(16))
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
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 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
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.
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
pipBalíč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:
python -m pip, aby bolo jasné, ku ktorému Pythonu balíčky patriaVirtuálne prostredie je oddelené miesto pre balíčky jedného projektu.
Prečo ho používať?
python -m venv .venv
Aktivácia na Linuxe/macOS:
source .venv/bin/activate
Aktivácia vo Windows PowerShell:
.venv\Scripts\Activate.ps1
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
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.