True versus False
V Pythonu, stejně tak jako v jazyce C, neexeistuje datový typ
Hodnotu True vyjadřuje jakýkoliv typ s nenulovou
hodnotou. Naproti tomu hodnotě False odpovídá nula, None,
seznam (n-tice, slovník) s nulovým počtem položek a prázdný řetězec.
Zbytek je bráno jako True.
boolean
.
Python verze 2.3 vytvořil nový datový typ
bool
.
Nicméně, s True lze stále zacházet jako s číslem 1 a s False jako s číslem 0.
2
Porovnávání výrazů
Porovnávání výrazů se v Pythonu provádí pomocí ==
a
!=
.
<>
.
Tabulka porovnávacích operátorů:
Operátor | Význam |
---|---|
== | Rovná se |
!= | Nerovná se |
< | Menší než |
> | Větší než |
<= | Menší nebo rovno než |
>= | Větší nebo rovno než |
is | Je totéž co |
Všechny porovnávací operátory vracejí hodnotu True
nebo False
.
Od Pythonu verze 3.0 nelze používat operátory <, >, <= a >= s různými datovými
typy (vyhodí výjimku TypeError).
Operátor is
vrací True
v případě,
že objekt na levé straně je totožný z objektem na pravé straně
(tj. x a y jsou dvě jména pro
tentýž objekt – viz. Proměnné vs odkazy na proměnné.
Pokud se porovnávají řetězce, n-tice nebo seznamy, poronávají se položka za položkou. Podle první rozdílné hodnoty se určí, která struktura je větší/menší. Pokud se nenajde žádná rozdílná položka, pak je větší ta delší. (Není li žádná delší, jsou si rovny).
>>> b = 257
>>> a == a
True
>>> a is a
True
>>> a == b
True
>>> a is b
False
>>> c = b
>>> c is b
True
>>> a = (1, 2, 3)
>>> b = (1, 2, 3, 0)
>>> a < b
True
Porovnávání různých typů
TypeError
).
>>> b = [1, 2, 3]
>>> a == b # jedna se o ruzne datove typy
False
>>> a > b # v Pythonu 2.7 a starším projde
True
>>> a > b # v Pythonu 3.0 a novějším neprojde
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: tuple() > list()
Komplexní číslo se porovnává s jinými čísly nejdříve podle reálné složky. Je-li reálná složka stejná a imaginární položka je nenulová, je komplexní číslo větší.
Řetězec je vždy větší než číslo (dokonce i prázdný řetězec!).
Typ None
je menší než cokoliv, roven je jen sám sobě.
Porovnávání různých typů je seřazeno lexikograficky podle
anglických názvů (až na typ None
).
Typ int zde zastupuje všechny číselné typy. Při jejich vyhodnocování
je typ s menším rozsahem převeden na typ s vyšším rozsahem a poté se výraz
vyhodnotí.
Platí, že None
< int
< seznam (list) < řetězec (string)
< n-tice (tuple).
>>> y = [1,'ahoj']
>>> x > y
1
>>> x.sort()
>>> x > y
0
Logické operátory
Logické operátory jsou tři:
Operátor | Význam | Poznámka |
---|---|---|
x and y | je-li x pravdivé, vrací y, jinak x. | (1) |
x or y | je-li x pravdivé, vrací x, jinak y. | (1) |
not x | Vrací True, pokud je x vyhodnoceno jako False, jinak False | (2) |
(2) "not" má nižší prioritu než non-Boolean operátory, takže
not a == b
je interpretováné jako not (a == b)
, a a == not b
je syntaktická chyba.
>>> y = ':-)'
>>> x and y
''
>>> x or y
':-)'
>>> not x
True
>>> x = ':-))'
>>> x or y
':-))'
Bitové operátory
O bitových operátorech byla zmínka v kapitole Datové typy – Bitové operátory (| (bitové or), & (bitové and), ^ (bitové xor) …).