True versus False

V Pythonu, stejně tak jako v jazyce C, neexeistuje datový typ boolean. 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.

Python verze 2.2.1 zavádí v built-in modulu hodnoty True = 1 a False = 0,
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.
>>> True + 1
2

Porovnávání výrazů

Porovnávání výrazů se v Pythonu provádí pomocí == a !=.

V Pythonu před verzí 3.0 bylo možné používat jako „nerovná se “ <>.

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

>>> a = 257
>>> 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ů

Od Pythonu verze 3.0 nelze používat operátory <, >, <= a >= s různými datovými typy (vyhodí výjimku TypeError).
>>> a = (1, 2, 3)
>>> 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()
Následující text platí pouze pro Python 2.7 a starší.

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

>>> x = ['',None]
>>> 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
and y je-li x pravdivé, vrací y, jinak x. (1)
or y je-li x pravdivé, vrací x, jinak y. (1)
not x Vrací True, pokud je x vyhodnoceno jako False, jinak False (2)
(1) Tyto vypočítávají pouze levou stranu operátoru, pokud to k zjištění výsledku stačí.
(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.
>>> x = ''
>>> 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) …).

Komentář Hlášení chyby
Vytvořeno: 11.9.2005
Naposledy upraveno: 30.8.2015
Tato stánka používá ke svému běhu cookies, díky kterým je možné monitorovat, co tu provádíte (ne že bych to bez cookies nezvládl). Také vás tu bude špehovat google analytics. Jestli si myslíte, že je to problém, vypněte si cookies ve vašem prohlížeči, nebo odejděte a už se nevracejte :-). Prohlížením tohoto webu souhlasíte s používáním cookies. Dozvědět se více..