Učíme se programovat v jazyce Python: Kap.2 Hodnoty, výrazy a příkazy

prev up next title end end

2. Hodnoty, výrazy a příkazy

  1. Hodnoty a typy objektů
  2. Typy datových objektů
  3. Booleovské hodnoty a výrazy
  4. Změna typu hodnoty
  5. Proměnné
    1. Změna přiřazení
    2. Aktualizace proměnné
    3. Anotace typu proměnné
  6. Jména a klíčová slova
  7. Operátory a operandy
    1. Aritmetické operátory
    2. Bitwise operátory
    3. Operátory rozšířeného přiřazení
    4. Mroží operátor
    5. Relační operátory
    6. Logické operátory
    7. Speciální operátory
    8. Hvězdičkové operátory
    9. Pořadí operací
    10. Podtržítka
    11. Operace 'stack & queue'
  8. Cvičení

2.1 Hodnoty a typy objektů

Ústředním pojmem objektově orientovaného (viz Kap. 10.1) programovacího jazyka Python je objekt - coby instance programové struktury, zvané třída.

Celou plejádu možných objektů lze zhruba rozdělit do dvou skupin:

  1. Na datové objekty, obsahující údaje (data), s nimiž lze pomocí jiných objektů pracovat - tyto objekty jsou blíže popsány v odstavci 2.2.
  2. Na provozní objety, schopné s uvedenými datovými objekty manipulovat - příkladem těchto objektů budiž funkce, metody a třídy (viz).

Každý objekt má jedinečnou hodnotu (value), typ (type) a identitu (ID).

Hodnota je inherentní význam datového objektu, vyjadřující množství (např. číslo), vlastnost (např. barvu) či jedinečnost (např. textový řetězec), s nímž může být v rámci výpočtu manipulováno. Každá hodnota je nositelem nějakého typu.

Typ je název třídy, z níž byl objekt odvozen. Typ objektu vymezuje množinu podporovaných operací a rovněž definuje možné hodnoty objektu. Pokud si nejsme jisti, k jakému typu neboli třídě objekt patří, zjistíme to vestavěnou (built-in) funkcí type():

>>> type("Hello, World!")    # Text v uvozovkách je objekt
<class 'str'>                  typu 'string' neboli řetězec
>>> type(17)                 # Celé číslo je objekt typu 'integer'    
<class 'int'>                              
>>> type(3.2)                # Desetinné číslo je objekt
<class 'float'>                    typu 'float'

Vězme tedy, že řetězce (strings) patří k typu str a celá čísla (integers) k typu int. Čísla s desetinnou čárkou (v Pythonu tečkou) patří k typu float. Přehled typů je uveden v následující části 2.2.

A což objekty jako "17" a "2.3"? Vypadají jako čísla, ale jsou v uvozovkách.

>>> type("17")
<class 'str'>
>>> type("2.3")
<class 'str'>

Jsou to řetězce. Řetězce bývají v Pythonu uzavřeny v jednoduchých ('), dvojitých (") nebo i trojitých (''') uvozovkách. Uvnitř dvojitých uvozovek mohou být uvozovky jednoduché a obráceně: 'Pravil "Ne!" '.

Identita objektu je vyjádřena jeho identifikačním číslem (ID), které je adresou paměťového místa, ve kterém je aktuálně hodnota (v binární formě) uložena.
Některé objekty mohou mít explicitně přiřazené jméno, obecně označované jako proměnná (variable). Typ proměnné je dán typem jí přiřazené hodnoty:

>>> num = 17; type(num), type(17)            # viz Poznámka-1           
(<class 'int'>, <class 'int'>)                
>>> id(num); id(17)        
(1835649200, 1835649200)                     # viz Poznámka-2

Poznámka-1:
V konzole interpreta (shellu) lze na jeden řádek vložit více příkazů, oddělených středníkem, případně čárkou.
Poznámka-2:
Výstup na posledním řádku nutno brát s jistou rezervou, neboť ne vždy id(name) == id(value). Vždy však platí, že identita existujícího objektu je v rámci jedné seance neměnná.

Vznik objektu

Pro zvídavé

Není na škodu si uvědomit, že objekt (základní entita Pythonu) má tři stadia existence:

  1. jako entita, daná pravidly jazyka Python
  2. použitá možnost, daná deklarací objektu ve zdrojovém kódu (skriptu) nebo v příkazovém řádku; toto stadium má dvě variety - objekty předdefinované (built-in), které jsou součástí programového vybavení Pythonu a objekty deklarované uživatelem
  3. realizovaná možnost, daná provedením zdrojového kódu interpretem

Nový objekt vzniká zpracováním programového textu interpretem Pythonu, přičemž je ověřováno, zda takový objekt již je či není v paměti počítače uložen.
Přiřazování identifikačních čísel k objektům je ve výlučné kompetenci interpreta a do jisté míry se řídí řadou známých pravidel.

Opuštěná hodnota zůstává v paměti i po změně přiřazení. Z paměti zmizí až po ukončení aktuální seance Pythonu působením procedury garbage collection.


2.2 Typy datových objektů

Datové typy Pythonu slouží k ukládání různých druhů dat a k manipulaci s nimi. Rozlišujeme datové objekty měnitelné (mutable) a neměnitelné (immutable).

Následující stručný přehled typů datových objektů jazyka Python je zároveň přehledem jejich možných literálů (přímých zápisů jejich hodnoty). V přehledu jsou nejprve uváděny názvy typů, posléze jejich literály.

Speciální typy

Numerické typy (numbers)