Slovník pojmů

>>>

Výchozí výzva Pythonu v interaktivním shellu. Často se objevuje u ukázek kódu, které lze spustit interaktivně v interpretu.

...

Může označovat:

  • Výchozí výzvu Pythonu v interaktivním shellu při zadávání odsazeného bloku kódu, uvnitř páru odpovídajících levých a pravých oddělovačů (kulatých, hranatých či složených závorek nebo trojitých uvozovek) nebo po zadání dekorátoru.

  • Podobu objektu Ellipsis tvořenou třemi tečkami.

abstract base class

Abstraktní základní třídy (abstract base classes, ABC) doplňují kachní typování tím, že umožňují definovat rozhraní v případech, kdy by jiné techniky, například hasattr(), byly neohrabané nebo nenápadně chybné (například u magických metod). ABC zavádějí virtuální podtřídy, tedy třídy, které z dané třídy nedědí, ale funkce isinstance() a issubclass() je přesto rozpoznají; viz dokumentace modulu abc. Python obsahuje řadu vestavěných ABC pro datové struktury (v modulu collections.abc), čísla (v modulu numbers), proudy (v modulu io) a vyhledávače a zavaděče importů (v modulu importlib.abc). Vlastní ABC můžete vytvářet pomocí modulu abc.

annotate function

Volatelný objekt, jehož zavoláním lze získat anotace objektu. Anotační funkce jsou obvykle funkce automaticky vytvářené jako atribut __annotate__ funkcí, tříd a modulů. Anotační funkce jsou podmnožinou vyhodnocovacích funkcí.

annotation

Značka přidružená k proměnné, atributu třídy, parametru funkce nebo návratové hodnotě, která se podle konvence používá jako typová nápověda.

K anotacím místních proměnných nelze přistupovat za běhu, ale anotace globálních proměnných, atributů tříd a funkcí lze získat voláním annotationlib.get_annotations() nad moduly, třídami a funkcemi.

Tuto funkcionalitu popisují hesla anotace proměnné a anotace funkce a dokumenty PEP 484, PEP 526 a PEP 649. Doporučené postupy pro práci s anotacemi uvádí také Annotations Best Practices.

argument

Hodnota předaná funkci (nebo metodě) při jejím volání. Existují dva druhy argumentů:

  • argument klíčového slova: argument, kterému ve volání funkce předchází identifikátor (například name=), nebo argument předaný jako hodnota ve slovníku, jemuž předchází **. Například 3 a 5 jsou v následujících voláních complex() argumenty klíčových slov:

    complex(real=3, imag=5)
    complex(**{'real': 3, 'imag': 5})
    
  • poziční argument: argument, který není argumentem klíčového slova. Poziční argumenty se mohou objevit na začátku seznamu argumentů nebo být předány jako prvky iterovatelného objektu, kterému předchází *. Například 3 a 5 jsou v následujících voláních poziční argumenty:

    complex(3, 5)
    complex(*(3, 5))
    

Argumenty se přiřadí pojmenovaným místním proměnným v těle funkce. Pravidla tohoto přiřazení uvádí oddíl Calls. Z hlediska syntaxe lze argument vyjádřit libovolným výrazem; vyhodnocená hodnota se přiřadí místní proměnné.

Viz také heslo parametr, otázka FAQ o rozdílu mezi argumenty a parametry a PEP 362.

asynchronous context manager

Objekt, který řídí prostředí dostupné v příkazu async with definováním metod __aenter__() a __aexit__(). Zaveden v PEP 492.

asynchronous generator

Funkce, která vrací iterátor asynchronního generátoru. Podobá se korutinové funkci definované pomocí async def, obsahuje však výrazy yield, které vytvářejí posloupnost hodnot použitelnou v cyklu async for.

Obvykle se tímto pojmem rozumí funkce asynchronního generátoru, v některých souvislostech však může označovat iterátor asynchronního generátoru. Není-li zamýšlený význam zřejmý, použití úplných názvů zabrání nejednoznačnosti.

Funkce asynchronního generátoru může obsahovat výrazy await i příkazy async for a async with.

asynchronous generator iterator

Objekt vytvořený funkcí asynchronního generátoru.

Jde o asynchronní iterátor, který při volání metodou __anext__() vrací čekatelný objekt. Ten provádí tělo funkce asynchronního generátoru až k následujícímu výrazu yield.

Každý yield dočasně pozastaví zpracování a zapamatuje si stav provádění (včetně místních proměnných a nedokončených příkazů try). Když iterátor asynchronního generátoru fakticky pokračuje prostřednictvím dalšího čekatelného objektu vráceného metodou __anext__(), naváže tam, kde skončil. Viz PEP 492 a PEP 525.

asynchronous iterable

Objekt, který lze použít v příkazu async for. Musí vracet asynchronní iterátor ze své metody __aiter__(). Zaveden v PEP 492.

asynchronous iterator

Objekt implementující metody __aiter__() a __anext__(). Metoda __anext__() musí vracet čekatelný objekt. Příkaz async for vyhodnocuje čekatelné objekty vracené metodou __anext__() asynchronního iterátoru, dokud tato metoda nevyvolá výjimku StopAsyncIteration. Zaveden v PEP 492.

atomic operation

Operace, která se zdánlivě provede jako jediný nedělitelný krok: žádné jiné vlákno ji nemůže pozorovat napůl dokončenou a její účinky se projeví všechny najednou. Python nezaručuje atomicitu příkazů vysoké úrovně (například x += 1 provádí několik operací bajtkódu, a proto atomický není). Atomicita je zaručena pouze tam, kde je výslovně zdokumentována. Viz také souběh a datový souběh.

attached thread state

Stav vlákna, který je aktivní pro aktuální vlákno operačního systému.

Je-li stav vlákna připojen, má vlákno operačního systému přístup k celému C API Pythonu a může bezpečně spouštět interpret bajtkódu.

Pokud dokumentace funkce výslovně neuvádí jinak, pokus o volání C API bez připojeného stavu vlákna skončí fatální chybou nebo nedefinovaným chováním. Uživatel může stav vlákna připojit a odpojit výslovně prostřednictvím C API, nebo tak může implicitně učinit běhové prostředí, mimo jiné během blokujících volání v jazyce C a mezi voláními interpretu bajtkódu.

Ve většině sestavení Pythonu připojený stav vlákna znamená, že volající vlastní GIL aktuálního interpretu, takže v jednom okamžiku může mít připojený stav vlákna pouze jediné vlákno operačního systému. Ve sestaveních bez GIL mohou vlákna držet připojené stavy současně, což umožňuje skutečně paralelní běh interpretu bajtkódu.

attribute

Hodnota přidružená k objektu, na kterou se obvykle odkazuje jménem pomocí tečkového výrazu. Má-li například objekt o atribut a, odkazuje se na něj jako na o.a.

Pokud to objekt umožňuje, lze mu přiřadit atribut, jehož název není identifikátorem ve smyslu oddílu Names (identifiers and keywords), například pomocí setattr(). Takový atribut nebude dostupný pomocí tečkového výrazu a je nutné jej získat funkcí getattr().

awaitable

Objekt, který lze použít ve výrazu await. Může jít o korutinu nebo objekt s metodou __await__(). Viz také PEP 492.

BDFL

Benevolent Dictator For Life (doživotní benevolentní diktátor), známý také jako Guido van Rossum, tvůrce Pythonu.

binary file

Souborový objekt, který dokáže číst a zapisovat objekty podobné bajtům. Příklady binárních souborů jsou soubory otevřené v binárním režimu ('rb', 'wb' nebo 'rb+'), sys.stdin.buffer, sys.stdout.buffer a instance tříd io.BytesIO a gzip.GzipFile.

Viz také heslo textový soubor, které popisuje souborový objekt schopný číst a zapisovat objekty str.

borrowed reference

V C API Pythonu je vypůjčený odkaz (borrowed reference) odkaz na objekt, který kód používající objekt nevlastní. Pokud je objekt zničen, stane se z něj neplatný ukazatel. Úklid paměti může například odstranit poslední silný odkaz na objekt, a tím objekt zničit.

S výjimkou případů, kdy objekt nemůže být zničen před posledním použitím vypůjčeného odkazu, se doporučuje voláním Py_INCREF() převést vypůjčený odkaz přímo na silný odkaz. Funkci Py_NewRef() lze použít k vytvoření nového silného odkazu.

bytes-like object

Objekt podporující Buffer Protocol, který dokáže exportovat souvislou vyrovnávací paměť jazyka C. Patří sem všechny objekty bytes, bytearray a array.array i mnoho běžných objektů memoryview. Objekty podobné bajtům lze používat při různých operacích s binárními daty, mezi něž patří komprese, ukládání do binárního souboru a odesílání přes soket.

Některé operace vyžadují, aby byla binární data měnitelná. Dokumentace je často označuje jako „objekty podobné bajtům pro čtení i zápis“. Příklady objektů s měnitelnou vyrovnávací pamětí zahrnují bytearray a memoryview objektu bytearray. Jiné operace vyžadují uložení binárních dat v neměnných objektech („objekty podobné bajtům pouze pro čtení“); mezi příklady patří bytes a memoryview objektu bytes.

bytecode

Zdrojový kód Pythonu se kompiluje do bajtkódu, tedy vnitřní reprezentace programu Pythonu v interpretu CPython. Bajtkód se také ukládá do mezipaměti v souborech .pyc, takže je druhé spuštění stejného souboru rychlejší (není nutné znovu kompilovat zdrojový kód do bajtkódu). Říká se, že tento „mezilehlý jazyk“ běží na virtuálním stroji, který vykonává strojový kód odpovídající každé instrukci bajtkódu. Bajtkód nemusí fungovat mezi různými virtuálními stroji Pythonu ani zůstat stabilní mezi jednotlivými vydáními Pythonu.

Seznam instrukcí bajtkódu najdete v dokumentaci modulu the dis module.

callable

Volatelný objekt (callable) je objekt, který lze zavolat, případně se sadou argumentů (viz argument), pomocí následující syntaxe:

callable(argument1, argument2, argumentN)

Funkce, a tedy i metoda, je volatelným objektem. Volatelná je také instance třídy, která implementuje metodu __call__().

callback

Funkce zpětného volání (callback) je podprogram předaný jako argument, který má být spuštěn někdy později.

class

Šablona pro vytváření uživatelsky definovaných objektů. Definice třídy obvykle obsahuje definice metod, které pracují s instancemi této třídy.

class variable

Proměnná definovaná ve třídě, která má být měněna pouze na úrovni třídy (nikoli v instanci třídy).

closure variable

Volná proměnná, na kterou odkazuje vnořený obor platnosti a která je definována ve vnějším oboru platnosti, místo aby se za běhu vyhledávala v globálním nebo vestavěném jmenném prostoru. Lze ji definovat výslovně pomocí klíčového slova nonlocal, aby do ní bylo možné zapisovat, nebo implicitně, pokud se proměnná pouze čte.

Například ve funkci inner v následujícím kódu jsou x i print volné proměnné, ale pouze x je proměnná uzávěru:

def outer():
    x = 0
    def inner():
        nonlocal x
        x += 1
        print(x)
    return inner

Kvůli atributu codeobject.co_freevars (který navzdory svému názvu obsahuje pouze názvy proměnných uzávěru, nikoli seznam všech použitých volných proměnných) se někdy používá obecnější pojem volná proměnná, i když se má na mysli konkrétně proměnná uzávěru.

complex number

Rozšíření známého systému reálných čísel, v němž je každé číslo vyjádřeno jako součet reálné a imaginární části. Imaginární čísla jsou reálnými násobky imaginární jednotky (druhé odmocniny z -1), která se v matematice často zapisuje jako i a v technických oborech jako j. Python komplexní čísla přímo podporuje a používá druhý z těchto zápisů; imaginární část má příponu j, například 3+1j. Komplexní obdobu modulu math poskytuje modul cmath. Používání komplexních čísel je poměrně pokročilá matematická funkce. Pokud nevíte, že je potřebujete, téměř jistě je můžete bez obav ignorovat.

concurrency

Souběžnost (concurrency) je schopnost počítačového programu zpracovávat několik úloh současně. Python poskytuje knihovny pro psaní programů, které využívají různé podoby souběžnosti. asyncio slouží k práci s asynchronními úlohami a korutinami. threading poskytuje přístup k vláknům operačního systému a multiprocessing k jeho procesům. Vícejádrové procesory mohou vlákna a procesy provádět současně na různých jádrech CPU (viz paralelismus).

concurrent modification

Situace, kdy několik vláken současně mění sdílená data. Souběžná změna bez správné synchronizace může způsobit souběhy a také vyvolat datový souběh, poškození dat nebo obojí.

context

Tento pojem má podle místa a způsobu použití různé významy. Mezi běžné patří:

context management protocol

Metody __enter__() a __exit__(), které volá příkaz with. Viz PEP 343.

context manager

Objekt, který implementuje protokol správy kontextu a řídí prostředí dostupné uvnitř příkazu with. Viz PEP 343.

context variable

Proměnná, jejíž hodnota závisí na tom, který kontext je aktuální. K hodnotám se přistupuje prostřednictvím objektů contextvars.ContextVar. Kontextové proměnné se používají především k oddělení stavu mezi souběžnými asynchronními úlohami.

contiguous

Vyrovnávací paměť se považuje za souvislou právě tehdy, když je souvislá podle jazyka C (C-contiguous) nebo podle Fortranu (Fortran contiguous). Nulově rozměrné vyrovnávací paměti jsou souvislé podle C i Fortranu. V jednorozměrných polích musí být prvky uloženy v paměti vedle sebe v pořadí rostoucích indexů počínaje nulou. Při průchodu prvky vícerozměrného pole souvislého podle C v pořadí jejich adres v paměti se nejrychleji mění poslední index. U polí souvislých podle Fortranu se naopak nejrychleji mění první index.

coroutine

Korutiny jsou obecnější podobou podprogramů. Do podprogramu se vstupuje v jednom bodě a v jiném se opouští. Do korutiny lze vstoupit, opustit ji a pokračovat v ní na mnoha různých místech. Lze je implementovat příkazem async def. Viz také PEP 492.

coroutine function

Funkce, která vrací objekt korutiny. Korutinovou funkci lze definovat příkazem async def a může obsahovat klíčová slova await, async for a async with. Ta byla zavedena v PEP 492.

CPython

Kanonická implementace programovacího jazyka Python distribuovaná na webu python.org. Pojem „CPython“ se používá, když je tuto implementaci nutné odlišit od jiných, například Jythonu nebo IronPythonu.

current context

Kontext (objekt contextvars.Context), který objekty ContextVar právě používají k přístupu (získání nebo nastavení) k hodnotám kontextových proměnných. Každé vlákno má vlastní aktuální kontext. Frameworky pro spouštění asynchronních úloh (viz asyncio) přidružují každé úloze kontext, který se stane aktuálním, kdykoli úloha zahájí provádění nebo v něm pokračuje.

cyclic isolate

Podskupina jednoho nebo více objektů, které na sebe navzájem odkazují v cyklu odkazů, ale neodkazuje na ně žádný objekt mimo skupinu. Cílem cyklického úklidu paměti je tyto skupiny rozpoznat a přerušit cykly odkazů, aby bylo možné paměť uvolnit.

data race

Situace, kdy několik vláken současně přistupuje ke stejnému místu v paměti, alespoň jeden z těchto přístupů je zápis a vlákna svůj přístup neřídí žádnou synchronizací. Datové souběhy vedou k nedeterministickému chování a mohou způsobit poškození dat. Správné použití zámků a dalších synchronizačních primitiv datovým souběhům zabraňuje. Datový souběh může nastat pouze v nativním kódu, ale nativní kód může být zpřístupněn prostřednictvím API Pythonu. Viz také souběh a bezpečnost ve více vláknech.

deadlock

Situace, kdy dvě nebo více úloh (vláken, procesů či korutin) čeká neomezeně dlouho, až ostatní uvolní prostředky nebo dokončí činnost, takže žádná z nich nemůže pokračovat. Pokud například vlákno A drží zámek 1 a čeká na zámek 2, zatímco vlákno B drží zámek 2 a čeká na zámek 1, budou obě čekat neomezeně dlouho. V Pythonu tato situace často vzniká získáváním více zámků v rozporném pořadí nebo cyklickými závislostmi join/await. Uváznutí lze zabránit tím, že se více zámků získává vždy ve stejném pořadí. Viz také zámek a reentrantní.

decorator

Funkce vracející jinou funkci, která se obvykle používá k transformaci funkce pomocí syntaxe @wrapper. Běžnými příklady dekorátorů jsou classmethod() a staticmethod().

Syntaxe dekorátoru je pouze syntaktický cukr; následující dvě definice funkcí jsou významově rovnocenné:

def f(arg):
    ...
f = staticmethod(f)

@staticmethod
def f(arg):
    ...

Stejný koncept existuje také pro třídy, u nich se však používá méně často. Více informací o dekorátorech najdete v dokumentaci definic funkcí a definic tříd.

descriptor

Libovolný objekt definující metody __get__(), __set__() nebo __delete__(). Je-li atribut třídy deskriptorem, při vyhledávání atributu se aktivuje jeho zvláštní chování při vazbě. Při získání, nastavení nebo odstranění atributu pomocí a.b se obvykle ve slovníku třídy objektu a vyhledá objekt pojmenovaný b. Je-li však b deskriptorem, zavolá se příslušná metoda deskriptoru. Porozumění deskriptorům je klíčem k hlubšímu pochopení Pythonu, protože tvoří základ mnoha vlastností včetně funkcí, metod, vlastností, třídních a statických metod a odkazů na nadřazené třídy.

Více informací o metodách deskriptorů najdete v oddílu Implementing Descriptors nebo v návodu k deskriptorům.

dictionary

Asociativní pole, v němž jsou libovolné klíče mapovány na hodnoty. Klíčem může být jakýkoli objekt s metodami __hash__() a __eq__(). V Perlu se nazývá hash.

dictionary comprehension

Stručný způsob, jak zpracovat všechny nebo některé prvky iterovatelného objektu a vrátit slovník s výsledky. results = {n: n ** 2 for n in range(10)} vytvoří slovník, v němž je klíč n mapován na hodnotu n ** 2. Viz Displays for lists, sets and dictionaries.

dictionary view

Objekty vracené metodami dict.keys(), dict.values() a dict.items() se nazývají pohledy na slovník. Poskytují dynamický pohled na položky slovníku, takže se v nich projeví každá změna slovníku. Chcete-li pohled na slovník převést na úplný seznam, použijte list(dictview). Viz Dictionary view objects.

docstring

Řetězcový literál uvedený jako první výraz ve třídě, funkci nebo modulu. Při provádění bloku příkazů je sice ignorován, kompilátor jej však rozpozná a uloží do atributu __doc__ příslušné třídy, funkce nebo modulu. Protože je dostupný prostřednictvím introspekce, představuje obvyklé místo pro dokumentaci objektu.

duck-typing

Programátorský styl, který při rozhodování, zda objekt poskytuje správné rozhraní, nezkoumá jeho typ; místo toho se příslušná metoda či atribut jednoduše zavolá nebo použije („Pokud to vypadá jako kachna a kváká jako kachna, musí to být kachna.“). Důrazem na rozhraní namísto konkrétních typů zvyšuje dobře navržený kód svou pružnost, protože umožňuje polymorfní záměnu. Kachní typování se vyhýbá testům pomocí type() nebo isinstance(). (Lze je však doplnit abstraktními základními třídami.) Místo toho obvykle využívá testy funkcí hasattr() nebo programátorský styl EAFP.

dunder

Neformální zkratka anglického „double underscore“ (dvojité podtržítko), používaná při hovoru o speciálních metodách. Například __init__ se často vyslovuje „dunder init“.

EAFP

„Je snazší požádat o odpuštění než o svolení“ (Easier to ask for forgiveness than permission). Tento běžný styl programování v Pythonu předpokládá existenci platných klíčů nebo atributů a zachytí výjimku, pokud se předpoklad ukáže jako chybný. Tento čistý a rychlý styl se vyznačuje častým používáním příkazů try a except. Je opakem stylu LBYL, běžného v mnoha jiných jazycích, například v C.

evaluate function

Funkce, kterou lze zavolat k vyhodnocení líně vyhodnocovaného atributu objektu, například hodnoty aliasů typů vytvořených příkazem type.

expression

Část syntaxe, kterou lze vyhodnotit na určitou hodnotu. Jinými slovy je výraz složen z prvků, jako jsou literály, názvy, přístupy k atributům, operátory nebo volání funkcí, které všechny vracejí hodnotu. Na rozdíl od mnoha jiných jazyků nejsou všechny jazykové konstrukce výrazy. Existují také příkazy, které jako výrazy použít nelze, například while. Také přiřazení jsou příkazy, nikoli výrazy.

extension module

Modul napsaný v C nebo C++, který ke komunikaci s jádrem Pythonu a uživatelským kódem používá C API Pythonu.

f-string
f-strings

Řetězcové literály s předponou f nebo F se běžně nazývají „f-řetězce“, což je zkrácený název pro formátované řetězcové literály. Viz také PEP 498.

file object

Objekt, který nad podkladovým prostředkem poskytuje souborově orientované API (s metodami jako read() nebo write()). Podle způsobu svého vytvoření může souborový objekt zprostředkovávat přístup ke skutečnému souboru na disku nebo k jinému typu úložiště či komunikačního zařízení (například standardnímu vstupu a výstupu, vyrovnávací paměti, soketu, rouře apod.). Souborové objekty se také nazývají objekty podobné souborům nebo proudy.

Ve skutečnosti existují tři kategorie souborových objektů: nezpracované binární soubory, binární soubory s vyrovnávací pamětí a textové soubory. Jejich rozhraní definuje modul io. Obvyklým způsobem vytvoření souborového objektu je použití funkce open().

file-like object

Synonymum pro souborový objekt.

filesystem encoding and error handler

Kódování a obsluha chyb, které Python používá k dekódování bajtů přijatých od operačního systému a ke kódování Unicode předávaného operačnímu systému.

Kódování souborového systému musí zaručit úspěšné dekódování všech bajtů menších než 128. Pokud tuto záruku neposkytuje, mohou funkce API vyvolat výjimku UnicodeError.

Kódování souborového systému a jeho obsluhu chyb lze zjistit funkcemi sys.getfilesystemencoding() a sys.getfilesystemencodeerrors().

Kódování souborového systému a obsluha chyb se při spuštění Pythonu nastavují funkcí PyConfig_Read(); viz členy filesystem_encoding a filesystem_errors typu PyConfig.

Viz také kódování místního prostředí.

finder

Objekt, který se pokouší nalézt zavaděč importovaného modulu.

Existují dva druhy vyhledávačů: vyhledávače metacesty používané s sys.meta_path a vyhledávače položek cesty používané s sys.path_hooks.

Mnohem podrobnější informace uvádí oddíl Finders and loaders a dokumentace modulu importlib.

floor division

Matematické dělení, které zaokrouhluje dolů na nejbližší celé číslo. Operátorem celočíselného dělení je //. Výraz 11 // 4 se například vyhodnotí jako 2, na rozdíl od hodnoty 2.75 vrácené skutečným dělením čísel s plovoucí desetinnou čárkou. Všimněte si, že (-11) // 4 je -3, protože jde o hodnotu -2.75 zaokrouhlenou dolů. Viz PEP 238.

free threading

Model vláken, v němž může několik vláken současně provádět bajtkód Pythonu v témže interpretu. Je opakem modelu s globálním zámkem interpretu, který dovoluje provádět bajtkód Pythonu vždy pouze jednomu vláknu. Viz PEP 703.

free-threaded build

Sestavení CPythonu, které podporuje běh bez GIL a před kompilací bylo nakonfigurováno volbou --disable-gil.

Viz Python support for free threading.

free variable

Formálně je podle modelu provádění jazyka volnou proměnnou každá proměnná použitá ve jmenném prostoru, která v něm není místní proměnnou. Příklad uvádí heslo proměnná uzávěru. V praxi se tento pojem kvůli názvu atributu codeobject.co_freevars někdy používá také jako synonymum pro proměnnou uzávěru.

function

Posloupnost příkazů, která volajícímu vrací určitou hodnotu. Lze jí také předat nula nebo více argumentů, které mohou být použity při provádění těla funkce. Viz také parametr, metoda a oddíl Function definitions.

function annotation

Anotace parametru nebo návratové hodnoty funkce.

Anotace funkcí se obvykle používají pro typové nápovědy: od následující funkce se například očekává, že přijme dva argumenty typu int a vrátí rovněž hodnotu typu int:

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

Syntaxi anotací funkcí vysvětluje oddíl Function definitions.

Tuto funkcionalitu popisuje také heslo anotace proměnné a PEP 484. Doporučené postupy pro práci s anotacemi uvádí Annotations Best Practices.

__future__

Příkaz future, from __future__ import <feature>, nařídí kompilátoru zkompilovat aktuální modul se syntaxí nebo sémantikou, která se stane standardem v některém budoucím vydání Pythonu. Modul __future__ dokumentuje možné hodnoty feature. Importem tohoto modulu a vyhodnocením jeho proměnných lze zjistit, kdy byla nová vlastnost poprvé přidána do jazyka a kdy se stane (nebo stala) výchozí:

>>> import __future__
>>> __future__.division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
garbage collection

Proces uvolňování paměti, která již není používána. Python uklízí paměť pomocí počítání odkazů a cyklického úklidu, který dokáže rozpoznat a přerušit cykly odkazů. Úklid paměti lze řídit modulem gc.

generator

Funkce, která vrací iterátor generátoru. Vypadá jako běžná funkce, obsahuje však výrazy yield, které vytvářejí řadu hodnot použitelnou v cyklu for nebo získávanou po jedné funkcí next().

Pojem obvykle označuje funkci generátoru, v některých souvislostech však může znamenat iterátor generátoru. Není-li zamýšlený význam zřejmý, použití úplných názvů zabrání nejednoznačnosti.

generator iterator

Objekt vytvořený funkcí generátoru.

Každý yield dočasně pozastaví zpracování a zapamatuje si stav provádění (včetně místních proměnných a nedokončených příkazů try). Když iterátor generátoru pokračuje, naváže tam, kde skončil (na rozdíl od funkcí, které při každém volání začínají znovu).

generator expression

Výraz, který vrací iterátor. Vypadá jako běžný výraz následovaný klauzulí for, jež definuje řídicí proměnnou cyklu a rozsah, a volitelnou klauzulí if. Celý výraz vytváří hodnoty pro obklopující funkci:

>>> sum(i*i for i in range(10))         # sum of squares 0, 1, 4, ... 81
285
generic function

Funkce složená z více funkcí, které implementují stejnou operaci pro různé typy. O tom, která implementace se při volání použije, rozhoduje algoritmus výběru.

Viz také heslo jednoduchý výběr, dekorátor functools.singledispatch() a PEP 443.

generic type

Typ, který lze parametrizovat; obvykle jde o kontejnerovou třídu, například list nebo dict. Používá se pro typové nápovědy a anotace.

Podrobnosti uvádějí typy generických aliasů, PEP 483, PEP 484, PEP 585 a modul typing.

GIL

Viz globální zámek interpretu.

global interpreter lock

Mechanismus, kterým interpret CPythonu zajišťuje, aby bajtkód Pythonu provádělo vždy pouze jedno vlákno. Zjednodušuje implementaci CPythonu tím, že objektový model (včetně zásadních vestavěných typů, jako je dict) implicitně chrání před souběžným přístupem. Uzamčení celého interpretu usnadňuje jeho použití ve více vláknech, avšak za cenu velké části paralelismu, který nabízejí víceprocesorové počítače.

Některé standardní i externí rozšiřující moduly jsou však navrženy tak, aby GIL uvolnily při výpočetně náročných úlohách, například při kompresi nebo hašování. GIL se také vždy uvolňuje při vstupu a výstupu.

Od Pythonu 3.13 lze GIL zakázat konfigurační volbou sestavení --disable-gil. Po sestavení Pythonu s touto volbou je nutné kód spustit s volbou -X gil=0 nebo po nastavení proměnné prostředí PYTHON_GIL=0. Tato vlastnost zvyšuje výkon vícevláknových aplikací a usnadňuje efektivní využití vícejádrových CPU. Podrobnosti uvádí PEP 703.

Ve starších verzích C API Pythonu mohla funkce uvádět, že k jejímu použití musí být držen GIL. Tím se rozumí existence připojeného stavu vlákna.

global state

Data dostupná v celém programu, například proměnné na úrovni modulu, třídní proměnné nebo statické proměnné jazyka C v rozšiřujících modulech. Ve vícevláknových programech globální stav sdílený mezi vlákny obvykle vyžaduje synchronizaci, aby se zabránilo souběhům a datovým souběhům.

hash-based pyc

Soubor mezipaměti bajtkódu, který svou platnost určuje podle hodnoty hash odpovídajícího zdrojového souboru namísto času jeho poslední změny. Viz Cached bytecode invalidation.

hashable

Objekt je hašovatelný, pokud má hodnotu hash, která se po celou dobu jeho existence nemění (vyžaduje metodu __hash__()), a lze jej porovnávat s jinými objekty (vyžaduje metodu __eq__()). Hašovatelné objekty, které se porovnají jako shodné, musí mít stejnou hodnotu hash.

Díky hašovatelnosti lze objekt použít jako klíč slovníku nebo prvek množiny, protože tyto datové struktury interně používají hodnotu hash.

Většina neměnných vestavěných objektů Pythonu je hašovatelná; měnitelné kontejnery (například seznamy či slovníky) nikoli. Neměnné kontejnery (například n-tice a zmrazené množiny) jsou hašovatelné pouze tehdy, jsou-li hašovatelné jejich prvky. Instance uživatelsky definovaných tříd jsou ve výchozím nastavení hašovatelné. Všechny se porovnají jako různé (s výjimkou porovnání se sebou samými) a jejich hodnota hash je odvozena z jejich id().

IDLE

Integrované vývojové a výukové prostředí (Integrated Development and Learning Environment) pro Python. IDLE — Python editor and shell je základní prostředí editoru a interpretu dodávané se standardní distribucí Pythonu.

immortal

Nesmrtelné objekty jsou implementačním detailem CPythonu zavedeným v PEP 683.

Je-li objekt nesmrtelný, jeho počet odkazů se nikdy nemění, a proto se za běhu interpretu nikdy neuvolní. V CPythonu jsou nesmrtelné například True a None.

Nesmrtelné objekty lze rozpoznat funkcí sys._is_immortal() nebo v C API funkcí PyUnstable_IsImmortal().

immutable

Objekt s pevnou hodnotou. Mezi neměnné objekty patří čísla, řetězce a n-tice. Takový objekt nelze změnit; má-li být uložena jiná hodnota, musí se vytvořit nový objekt. Neměnné objekty hrají důležitou roli tam, kde je zapotřebí stálá hodnota hash, například jako klíče slovníku. Ze své podstaty jsou bezpečné ve více vláknech, protože jejich stav nelze po vytvoření změnit, čímž odpadají obavy z nesprávně synchronizované souběžné změny.

import path

Seznam umístění (neboli položek cesty), v nichž vyhledávač založený na cestě hledá moduly k importu. Při importu tento seznam obvykle pochází z sys.path, u podbalíčků však může pocházet také z atributu __path__ nadřazeného balíčku.

importing

Proces, kterým se kód Pythonu z jednoho modulu zpřístupní kódu Pythonu v jiném modulu.

importer

Objekt, který modul vyhledává i načítá; je tedy zároveň vyhledávačem i zavaděčem.

index

Číselná hodnota představující pozici prvku v posloupnosti.

Indexování v Pythonu začíná nulou. Například things[0] označuje první prvek objektu things a things[1] jeho druhý prvek.

V některých souvislostech Python umožňuje záporné indexy pro počítání od konce posloupnosti a indexování pomocí výřezů.

Viz také indexování.

interactive

Python má interaktivní interpret, což znamená, že do jeho výzvy můžete zadávat příkazy a výrazy, okamžitě je spouštět a prohlížet si výsledky. Stačí spustit python bez argumentů (případně jej vybrat v hlavní nabídce počítače). Jde o velmi účinný způsob zkoušení nových myšlenek a prohlížení modulů a balíčků (nezapomeňte na help(x)). Více o interaktivním režimu uvádí oddíl Interaktivní režim.

interpreted

Python je interpretovaný jazyk, nikoli kompilovaný, přestože kompilátor bajtkódu tuto hranici poněkud stírá. Zdrojové soubory tedy lze spouštět přímo, aniž by bylo nutné výslovně vytvořit a poté spustit samostatný spustitelný soubor. Interpretované jazyky mají obvykle kratší cyklus vývoje a ladění než jazyky kompilované, jejich programy však zpravidla běží pomaleji. Viz také interaktivní režim.

interpreter shutdown

Když interpret Pythonu obdrží požadavek na ukončení, vstoupí do zvláštní fáze, v níž postupně uvolňuje všechny přidělené prostředky, například moduly a různé zásadní vnitřní struktury. Také několikrát zavolá úklid paměti. To může spustit kód v uživatelsky definovaných destruktorech nebo funkcích zpětného volání slabých odkazů. Kód prováděný během ukončování může narazit na různé výjimky, protože prostředky, na něž spoléhá, již nemusí fungovat (běžnými příklady jsou knihovní moduly nebo mechanismus varování).

Hlavním důvodem ukončení interpretu je dokončení modulu __main__ nebo právě spuštěného skriptu.

iterable

Objekt schopný vracet své prvky jeden po druhém. Mezi iterovatelné objekty patří všechny typy posloupností (například list, str a tuple) a některé neposloupnostní typy, jako je dict, souborové objekty a objekty libovolných vámi definovaných tříd s metodou __iter__() nebo metodou __getitem__(), která implementuje sémantiku posloupnosti.

Iterovatelné objekty lze používat v cyklu for a na mnoha dalších místech, kde je zapotřebí posloupnost (zip(), map(), …). Předáte-li iterovatelný objekt vestavěné funkci iter() jako argument, vrátí pro tento objekt iterátor. Ten lze použít k jednomu průchodu sadou hodnot. Při práci s iterovatelnými objekty obvykle není nutné volat iter() ani se o iterátory starat ručně. Příkaz for to udělá automaticky a po dobu cyklu vytvoří dočasnou nepojmenovanou proměnnou pro uložení iterátoru. Viz také iterátor, posloupnost a generátor.

iterator

Objekt představující proud dat. Opakovaná volání metody iterátoru __next__() (nebo jeho předávání vestavěné funkci next()) vracejí postupně další položky proudu. Když již nejsou žádná data k dispozici, vyvolá se místo toho výjimka StopIteration. V tom okamžiku je iterátor vyčerpán a každé další volání jeho metody __next__() pouze znovu vyvolá StopIteration. Iterátory musí mít metodu __iter__(), která vrací samotný objekt iterátoru. Každý iterátor je tedy zároveň iterovatelný a lze jej použít na většině míst, která přijímají jiné iterovatelné objekty. Významnou výjimkou je kód, který se pokouší provést více průchodů. Kontejnerový objekt (například list) vytvoří nový iterátor pokaždé, když jej předáte funkci iter() nebo použijete v cyklu for. Stejný pokus s iterátorem pouze vrátí již vyčerpaný objekt iterátoru použitý při předchozím průchodu, takže se bude jevit jako prázdný kontejner.

Více informací najdete v oddílu Iterator Types.

Implementační detail CPythonu

CPython neuplatňuje důsledně požadavek, aby iterátor definoval metodu __iter__(). Také mějte na paměti, že CPython bez GIL nezaručuje bezpečné chování ve více vláknech při operacích s iterátory.

key

Hodnota, která určuje položku v mapování. Viz také indexování.

key function

Funkce klíče neboli porovnávací funkce je volatelný objekt, který vrací hodnotu používanou k řazení nebo uspořádání. Funkce locale.strxfrm() například vytváří klíč řazení zohledňující pravidla řazení daného místního prostředí.

Řada nástrojů Pythonu přijímá funkce klíče, jimiž lze řídit řazení či seskupování prvků. Patří mezi ně min(), max(), sorted(), list.sort(), heapq.merge(), heapq.nsmallest(), heapq.nlargest() a itertools.groupby().

Funkci klíče lze vytvořit několika způsoby. Například metoda str.casefold() může sloužit jako funkce klíče pro řazení bez ohledu na velikost písmen. Funkci klíče lze také sestavit z výrazu lambda, například lambda r: (r[0], r[2]). Dalšími třemi konstruktory funkcí klíče jsou operator.attrgetter(), operator.itemgetter() a operator.methodcaller(). Příklady vytváření a používání funkcí klíče uvádí návod k řazení.

keyword argument

Viz argument.

lambda

Anonymní funkce zapsaná přímo na místě, která se skládá z jediného výrazu vyhodnoceného při volání funkce. Syntaxe pro vytvoření lambda funkce je lambda [parameters]: expression.

LBYL

„Dvakrát měř, jednou řež“ (Look before you leap). Tento styl programování před voláním nebo vyhledáváním výslovně testuje vstupní podmínky. Je opakem přístupu EAFP a vyznačuje se častým používáním příkazů if.

Ve vícevláknovém prostředí může přístup LBYL způsobit souběh mezi „měřením“ a „řezáním“. Například kód if key in mapping: return mapping[key] může selhat, pokud jiné vlákno po testu, ale před vyhledáním odstraní key z mapping. Problém lze vyřešit pomocí zámků nebo přístupem EAFP. Viz také bezpečnost ve více vláknech.

lexical analyzer

Formální název pro tokenizér; viz token.

list

Vestavěná posloupnost Pythonu. Navzdory svému názvu se více podobá poli v jiných jazycích než spojovému seznamu, protože přístup k prvkům má složitost O(1).

list comprehension

Stručný způsob zpracování všech nebo některých prvků posloupnosti a vrácení seznamu s výsledky. result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] vytvoří seznam řetězců obsahujících sudá šestnáctková čísla (0x..) v rozsahu od 0 do 255. Klauzule if je volitelná. Pokud ji vynecháte, zpracují se všechny prvky v range(256).

lock

Synchronizační primitivum, které umožňuje přístup ke sdílenému prostředku vždy pouze jednomu vláknu. Vlákno musí před přístupem k chráněnému prostředku zámek získat a poté jej uvolnit. Pokusí-li se vlákno získat zámek, který již drží jiné vlákno, zablokuje se, dokud nebude zámek dostupný. Modul threading poskytuje třídu Lock (základní zámek) a RLock (reentrantní zámek). Zámky slouží k zabránění souběhům a zajištění bezpečného přístupu ke sdíleným datům z více vláken. Existují také jiné návrhové vzory, například fronty, vzor producent–konzument a stav místní pro vlákno. Viz také uváznutí a reentrantní.

lock-free

Operace, která nezískává žádný zámek a správnost zajišťuje atomickými instrukcemi CPU. Operace bez zámků lze provádět souběžně, aniž by se navzájem blokovaly, a nemohou je zablokovat operace držící zámky. V Pythonu bez GIL poskytují vestavěné typy, jako jsou dict a list, čtecí operace bez zámku. Jiná vlákna proto mohou během vícekrokových změn pozorovat mezilehlé stavy, i když tyto změny drží zámek objektu.

loader

Objekt, který načítá modul. Musí definovat metody exec_module() a create_module(), aby implementoval rozhraní Loader. Zavaděč obvykle vrací vyhledávač. Viz také:

locale encoding

V Unixu jde o kódování místního prostředí LC_CTYPE. Lze je nastavit funkcí locale.setlocale(locale.LC_CTYPE, new_locale).

Ve Windows jde o kódovou stránku ANSI (například "cp1252").

V systémech Android a VxWorks používá Python jako kódování místního prostředí "utf-8".

Kódování místního prostředí lze zjistit funkcí locale.getencoding().

Viz také kódování souborového systému a obsluha chyb.

magic method

Neformální synonymum pro speciální metodu.

mapping

Kontejnerový objekt, který podporuje vyhledávání libovolných klíčů a implementuje metody určené abstraktními základními třídami collections.abc.Mapping nebo collections.abc.MutableMapping; viz Collections Abstract Base Classes. Příklady zahrnují dict, collections.defaultdict, collections.OrderedDict a collections.Counter.

meta path finder

Vyhledávač vrácený při prohledávání sys.meta_path. Vyhledávače metacesty souvisejí s vyhledávači položek cesty, ale liší se od nich.

Metody implementované vyhledávači metacesty uvádí dokumentace třídy importlib.abc.MetaPathFinder.

metaclass

Třída třídy. Definice třídy vytváří název třídy, slovník třídy a seznam základních tříd. Metatřída přijme tyto tři argumenty a vytvoří z nich třídu. Většina objektově orientovaných jazyků poskytuje výchozí implementaci. Python se odlišuje možností vytvářet vlastní metatřídy. Většina uživatelů tento nástroj nikdy nepotřebuje, pokud však potřeba nastane, mohou metatřídy nabídnout účinná a elegantní řešení. Používají se například k zaznamenávání přístupu k atributům, zajištění bezpečnosti ve více vláknech, sledování vytváření objektů, implementaci jedináčků a mnoha dalším úlohám.

Více informací najdete v oddílu Metaclasses.

method

Funkce definovaná uvnitř těla třídy. Je-li zavolána jako atribut instance této třídy, obdrží objekt instance jako svůj první argument (obvykle nazývaný self). Viz funkce a vnořený obor platnosti.

method resolution order

Pořadí rozlišení metod (Method Resolution Order, MRO) je pořadí, v němž se při vyhledávání člena procházejí základní třídy. Podrobnosti algoritmu používaného interpretem Pythonu od vydání 2.3 uvádí The Python 2.3 Method Resolution Order.

module

Objekt sloužící jako organizační jednotka kódu Pythonu. Moduly mají jmenný prostor obsahující libovolné objekty Pythonu. Do Pythonu se načítají procesem importu.

Viz také balíček.

module spec

Jmenný prostor obsahující informace o importu používané k načtení modulu. Jde o instanci importlib.machinery.ModuleSpec.

Viz také Module specs.

MRO

Viz pořadí rozlišení metod.

mutable

Objekt, jehož stav se může během programu měnit. Ve vícevláknových programech vyžadují měnitelné objekty sdílené mezi vlákny pečlivou synchronizaci, aby se zabránilo souběhům. Viz také neměnný, bezpečný ve více vláknech a souběžná změna.

named tuple

Pojem „pojmenovaná n-tice“ označuje libovolný typ nebo třídu odvozenou od n-tice, k jejímž indexovatelným prvkům lze přistupovat také pojmenovanými atributy. Typ nebo třída může mít i další vlastnosti.

Pojmenovanými n-ticemi je několik vestavěných typů včetně hodnot vracených funkcemi time.localtime() a os.stat(). Dalším příkladem je sys.float_info:

>>> sys.float_info[1]                   # indexed access
1024
>>> sys.float_info.max_exp              # named field access
1024
>>> isinstance(sys.float_info, tuple)   # kind of tuple
True

Některé pojmenované n-tice jsou vestavěnými typy (jako příklady výše). Pojmenovanou n-tici lze také vytvořit běžnou definicí třídy, která dědí od tuple a definuje pojmenovaná pole. Takovou třídu lze napsat ručně, vytvořit odvozením od typing.NamedTuple nebo tovární funkcí collections.namedtuple(). Poslední dva postupy přidávají také některé další metody, které ručně psané nebo vestavěné pojmenované n-tice mít nemusejí.

namespace

Místo, kde je uložena proměnná. Jmenné prostory jsou implementovány jako slovníky. Existují místní, globální a vestavěné jmenné prostory i vnořené jmenné prostory v objektech (v metodách). Jmenné prostory podporují modularitu tím, že zabraňují konfliktům názvů. Funkce builtins.open a os.open() se například odlišují svými jmennými prostory. Ty také zlepšují čitelnost a udržovatelnost, protože je zřejmé, který modul funkci implementuje. Zápis random.seed() nebo itertools.islice() například ukazuje, že tyto funkce implementují moduly random, respektive itertools.

namespace package

Balíček, který slouží pouze jako kontejner podbalíčků. Balíčky jmenného prostoru nemusejí mít fyzickou reprezentaci a zejména se liší od běžných balíčků tím, že nemají soubor __init__.py.

Balíčky jmenného prostoru umožňují, aby několik samostatně instalovatelných balíčků mělo společný nadřazený balíček. V ostatních případech se doporučuje použít běžný balíček.

Více informací uvádí PEP 420 a Namespace packages.

Viz také modul.

native code

Kód zkompilovaný do strojových instrukcí, který běží přímo na procesoru, na rozdíl od kódu interpretovaného nebo spouštěného ve virtuálním stroji. V kontextu Pythonu nativní kód obvykle označuje kód v C, C++, Rustu nebo Fortranu v rozšiřujících modulech, který lze volat z Pythonu. Viz také rozšiřující modul.

nested scope

Možnost odkazovat na proměnnou v obklopující definici. Funkce definovaná uvnitř jiné funkce může například odkazovat na proměnné ve vnější funkci. Vnořené obory platnosti ve výchozím nastavení slouží pouze k odkazování, nikoli k přiřazování. Místní proměnné se čtou i zapisují v nejvnitřnějším oboru platnosti. Obdobně se globální proměnné čtou i zapisují v globálním jmenném prostoru. Klíčové slovo nonlocal umožňuje zápis do vnějších oborů platnosti.

new-style class

Starý název podoby tříd, která se nyní používá pro všechny objekty tříd. Ve starších verzích Pythonu mohly novější všestranné vlastnosti, například __slots__, deskriptory, vlastnosti, __getattribute__(), třídní a statické metody, používat pouze třídy nového stylu.

non-deterministic

Chování, při němž se výsledek programu může lišit mezi spuštěními se stejnými vstupy. Ve vícevláknových programech nedeterministické chování často vzniká v důsledku souběhů, kdy výsledek ovlivňuje relativní načasování nebo prokládání vláken. Správná synchronizace pomocí zámků a dalších synchronizačních primitiv pomáhá zajistit deterministické chování.

object

Libovolná data se stavem (atributy nebo hodnotou) a definovaným chováním (metodami). Také nejvyšší základní třída každé třídy nového stylu.

optimized scope

Obor platnosti, v němž kompilátor při kompilaci kódu spolehlivě zná názvy cílových místních proměnných, a může proto optimalizovat přístup pro čtení a zápis těchto názvů. Tímto způsobem jsou optimalizovány místní jmenné prostory funkcí, generátorů, korutin, generátorových notací a výrazů generátoru. Poznámka: většina optimalizací interpretu se uplatňuje ve všech oborech platnosti; na optimalizované obory jsou omezeny pouze ty, které spoléhají na známou sadu názvů místních a nemístních proměnných.

optional module

Rozšiřující modul, který je součástí standardní knihovny, ale v některých sestaveních CPythonu může chybět, obvykle kvůli chybějícím knihovnám třetích stran nebo nedostupnosti modulu pro danou platformu.

Seznam volitelných modulů vyžadujících knihovny třetích stran uvádí Requirements for optional modules.

package

Modul Pythonu, který může obsahovat podmoduly nebo rekurzivně podbalíčky. Technicky je balíček modulem Pythonu s atributem __path__.

Viz také běžný balíček a balíček jmenného prostoru.

parallelism

Provádění více operací současně (například na několika jádrech CPU). V sestaveních Pythonu s globálním zámkem interpretu (GIL) provádí bajtkód Pythonu vždy pouze jedno vlákno. Využití více jader CPU proto obvykle vyžaduje více procesů (například modul multiprocessing) nebo nativní rozšíření, která GIL uvolňují. V Pythonu bez GIL může kód Pythonu běžet současně v několika vláknech na různých jádrech.

parameter

Pojmenovaná entita v definici funkce (nebo metody), která určuje argument (nebo v některých případech argumenty), jejž může funkce přijmout. Existuje pět druhů parametrů:

  • poziční nebo klíčový: určuje argument, který lze předat buď pozičně, nebo jako argument klíčového slova. Jde o výchozí druh parametru, například foo a bar v následující definici:

    def func(foo, bar=None): ...
    
  • pouze poziční: určuje argument, který lze předat pouze pozičně. Pouze poziční parametry lze definovat vložením znaku / za ně v seznamu parametrů definice funkce, například posonly1 a posonly2 v následující definici:

    def func(posonly1, posonly2, /, positional_or_keyword): ...
    
  • pouze klíčový: určuje argument, který lze předat pouze klíčovým slovem. Pouze klíčové parametry lze definovat vložením jediného proměnného pozičního parametru nebo samostatného * před ně v seznamu parametrů definice funkce, například kw_only1 a kw_only2 v následující definici:

    def func(arg, *, kw_only1, kw_only2): ...
    
  • proměnný poziční: určuje, že lze předat libovolnou posloupnost pozičních argumentů (kromě pozičních argumentů přijímaných jinými parametry). Takový parametr lze definovat přidáním * před jeho název, například args v následující definici:

    def func(*args, **kwargs): ...
    
  • proměnný klíčový: určuje, že lze předat libovolný počet argumentů klíčových slov (kromě argumentů klíčových slov přijímaných jinými parametry). Takový parametr lze definovat přidáním ** před jeho název, například kwargs v předchozím příkladu.

Parametry mohou určovat volitelné i povinné argumenty a také výchozí hodnoty některých volitelných argumentů.

Viz také heslo argument, otázka FAQ o rozdílu mezi argumenty a parametry, třída inspect.Parameter, oddíl Function definitions a PEP 362.

per-object lock

Zámek přidružený ke konkrétní instanci objektu namísto globálního zámku sdíleného všemi objekty. V Pythonu bez GIL používají vestavěné typy, jako jsou dict a list, zámky jednotlivých objektů. Umožňují tak souběžné operace nad různými objekty a zároveň řadí operace nad týmž objektem za sebe. Operace, které drží zámek objektu, brání pokračování jiných zamykajících operací nad stejným objektem, ale neblokují operace bez zámku.

path entry

Jediné umístění na cestě importu, které vyhledávač založený na cestě prohledává při hledání modulů k importu.

path entry finder

Vyhledávač vrácený volatelným objektem v sys.path_hooks (tedy háčkem položky cesty), který dokáže vyhledávat moduly podle dané položky cesty.

Metody implementované vyhledávači položek cesty uvádí dokumentace třídy importlib.abc.PathEntryFinder.

path entry hook

Volatelný objekt v seznamu sys.path_hooks, který vrátí vyhledávač položky cesty, pokud dokáže hledat moduly v dané položce cesty.

path based finder

Jeden z výchozích vyhledávačů metacesty, který hledá moduly na cestě importu.

path-like object

Objekt představující cestu souborového systému. Objektem podobným cestě je buď objekt str či bytes představující cestu, nebo objekt implementující protokol os.PathLike. Objekt podporující protokol os.PathLike lze převést na cestu souborového systému typu str nebo bytes voláním funkce os.fspath(); funkce os.fsdecode(), respektive os.fsencode(), lze použít k zaručení výsledku typu str, respektive bytes. Zavedeno v PEP 519.

PEP

Návrh na vylepšení Pythonu (Python Enhancement Proposal). PEP je návrhový dokument, který poskytuje informace komunitě Pythonu nebo popisuje novou vlastnost Pythonu, jeho procesů či prostředí. PEP by měl obsahovat stručnou technickou specifikaci a odůvodnění navrhovaných vlastností.

PEP představují hlavní mechanismus pro navrhování významných nových vlastností, shromažďování názorů komunity na určitou otázku a dokumentování návrhových rozhodnutí v Pythonu. Autor PEP odpovídá za dosažení shody v komunitě a zaznamenání nesouhlasných názorů.

Viz PEP 1.

portion

Sada souborů v jediném adresáři (případně uložená v souboru ZIP), která přispívá do balíčku jmenného prostoru, jak jej definuje PEP 420.

positional argument

Viz argument.

provisional API

Provizorní API je záměrně vyňato ze záruk zpětné kompatibility standardní knihovny. Přestože se u takových rozhraní neočekávají zásadní změny, dokud jsou označena jako provizorní, mohou hlavní vývojáři v případě potřeby provést změny narušující zpětnou kompatibilitu, včetně úplného odstranění rozhraní. Takové změny nebudou prováděny bezdůvodně — nastanou pouze tehdy, budou-li odhaleny závažné základní nedostatky přehlédnuté před zařazením API.

I u provizorních API jsou zpětně nekompatibilní změny považovány za „poslední možnost“; vždy bude vyvinuto veškeré úsilí k nalezení zpětně kompatibilního řešení zjištěných problémů.

Tento proces umožňuje standardní knihovně dále se vyvíjet, aniž by v ní problematické návrhové chyby zůstaly dlouhodobě uzamčeny. Podrobnosti uvádí PEP 411.

provisional package

Viz provizorní API.

Python 3000

Přezdívka řady vydání Pythonu 3.x, vzniklá dávno v době, kdy bylo vydání verze 3 ještě vzdálenou budoucností. Zkracuje se také jako „Py3k“.

Pythonic

Myšlenka nebo část kódu, která přesně následuje běžné idiomy jazyka Python, namísto implementace pomocí konceptů obvyklých v jiných jazycích. Běžným idiomem Pythonu je například procházet všechny prvky iterovatelného objektu příkazem for. Mnoho jiných jazyků takovou konstrukci nemá, takže lidé neznalí Pythonu někdy místo ní používají číselné počítadlo:

for i in range(len(food)):
    print(food[i])

Na rozdíl od čistšího, pythonovského způsobu:

for piece in food:
    print(piece)
qualified name

Tečkovaný název zobrazující „cestu“ z globálního oboru modulu ke třídě, funkci nebo metodě definované v tomto modulu, jak ji definuje PEP 3155. U funkcí a tříd nejvyšší úrovně je kvalifikovaný název shodný s názvem objektu:

>>> class C:
...     class D:
...         def meth(self):
...             pass
...
>>> C.__qualname__
'C'
>>> C.D.__qualname__
'C.D'
>>> C.D.meth.__qualname__
'C.D.meth'

Při odkazování na moduly znamená plně kvalifikovaný název celou tečkovanou cestu k modulu včetně všech nadřazených balíčků, například email.mime.text:

>>> import email.mime.text
>>> email.mime.text.__name__
'email.mime.text'
race condition

Stav programu, kdy jeho chování závisí na relativním načasování nebo pořadí událostí, zejména ve vícevláknových programech. Souběhy mohou vést k nedeterministickému chování a obtížně reprodukovatelným chybám. Datový souběh je konkrétní druh souběhu zahrnující nesynchronizovaný přístup ke sdílené paměti. Programátorský styl LBYL je k souběhům ve vícevláknovém kódu zvlášť náchylný. Předcházet jim pomáhá používání zámků a dalších synchronizačních primitiv.

reference count

Počet odkazů na objekt. Když počet odkazů na objekt klesne na nulu, objekt se uvolní. Některé objekty jsou nesmrtelné a jejich počet odkazů se nikdy nemění, takže se nikdy neuvolní. Počítání odkazů obvykle není z kódu Pythonu viditelné, je však zásadní součástí implementace CPythonu. Programátoři mohou počet odkazů na konkrétní objekt získat voláním funkce sys.getrefcount().

V CPythonu se počty odkazů nepovažují za stabilní ani přesně definované hodnoty. Počet odkazů na objekt a způsob, jakým jej ovlivňuje kód Pythonu, se mohou mezi verzemi lišit.

regular package

Tradiční balíček, například adresář obsahující soubor __init__.py.

Viz také balíček jmenného prostoru.

reentrant

Vlastnost funkce nebo zámku, která umožňuje témuž vláknu funkci opakovaně volat nebo zámek opakovaně získat, aniž by došlo k chybě či uváznutí.

U funkcí reentrantnost znamená, že funkci lze bezpečně zavolat znovu ještě před dokončením předchozího volání. To je důležité, pokud může být volána rekurzivně nebo z obsluhy signálu. Funkce, které nejsou bezpečné ve více vláknech, se mohou chovat nedeterministicky, jsou-li reentrantně volány ve vícevláknovém programu.

U zámků je threading.RLock Pythonu reentrantní, takže vlákno, které jej již drží, jej může získat znovu bez zablokování. Naproti tomu threading.Lock reentrantní není — pokus získat jej dvakrát ze stejného vlákna způsobí uváznutí.

Viz také zámek a uváznutí.

REPL

Zkratka anglického „read–eval–print loop“ (smyčka načti–vyhodnoť–vypiš), jiný název pro interaktivní shell interpretu.

__slots__

Deklarace uvnitř třídy, která šetří paměť předběžným vyhrazením prostoru pro atributy instancí a odstraněním slovníků instancí. Ačkoli je tato technika oblíbená, její správné použití je poněkud obtížné a nejlépe se hodí pro vzácné případy, kdy aplikace citlivá na spotřebu paměti pracuje s velkým počtem instancí.

sequence

Iterovatelný objekt, který pomocí celočíselných indexů a speciální metody __getitem__() podporuje efektivní přístup k prvkům a definuje metodu __len__() vracející délku posloupnosti. Mezi vestavěné typy posloupností patří list, str, tuple a bytes. Také dict podporuje metody __getitem__() a __len__(), považuje se však za mapování, nikoli posloupnost, protože k vyhledávání používá libovolné hašovatelné klíče namísto celých čísel.

Abstraktní základní třída collections.abc.Sequence definuje mnohem bohatší rozhraní, které kromě metod __getitem__() a __len__() přidává count(), index(), __contains__() a __reversed__(). Typy implementující toto rozšířené rozhraní lze výslovně zaregistrovat funkcí register(). Obecnější dokumentaci metod posloupností uvádí běžné operace s posloupnostmi.

set comprehension

Stručný způsob zpracování všech nebo některých prvků iterovatelného objektu a vrácení množiny s výsledky. results = {c for c in 'abracadabra' if c not in 'abc'} vytvoří množinu řetězců {'r', 'd'}. Viz Displays for lists, sets and dictionaries.

single dispatch

Podoba výběru generické funkce, při níž se implementace vybírá podle typu jediného argumentu.

slice

Objekt typu slice, který popisuje část posloupnosti. Objekt výřezu vzniká při použití výřezové podoby indexovacího zápisu s dvojtečkami uvnitř hranatých závorek, například variable_name[1:3:5].

soft deprecated

Měkce zastaralé API by se nemělo používat v novém kódu, jeho použití ve stávajícím kódu je však bezpečné. API zůstává zdokumentované a testované, nebude se však dále rozvíjet.

Na rozdíl od běžného označení za zastaralé se při měkkém zastarání neplánuje odstranění API a nevydávají se varování.

Viz PEP 387: Soft Deprecation.

special method

Metoda, kterou Python implicitně volá k provedení určité operace nad typem, například sčítání. Názvy těchto metod začínají a končí dvojitým podtržítkem. Speciální metody dokumentuje oddíl Special method names.

standard library

Soubor balíčků, modulů a rozšiřujících modulů distribuovaných jako součást oficiálního balíčku interpretu Pythonu. Přesné složení se může lišit podle platformy, dostupných systémových knihoven nebo jiných kritérií. Dokumentaci najdete v The Python Standard Library.

Seznam všech možných názvů modulů standardní knihovny uvádí také sys.stdlib_module_names.

statement

Příkaz je součástí bloku příkazů („bloku“ kódu). Je buď výrazem, nebo jednou z několika konstrukcí s klíčovým slovem, například if, while či for.

static type checker

Externí nástroj, který čte a analyzuje kód Pythonu a hledá problémy, například nesprávné typy. Viz také typové nápovědy a modul typing.

stdlib

Zkratka pro standardní knihovnu.

strong reference

V C API Pythonu je silný odkaz odkazem na objekt, který vlastní kód držící tento odkaz. Při vytvoření odkazu se silný odkaz získá voláním Py_INCREF() a při jeho odstranění se uvolní voláním Py_DECREF().

K vytvoření silného odkazu na objekt lze použít funkci Py_NewRef(). Před opuštěním oboru platnosti silného odkazu je obvykle nutné zavolat Py_DECREF(), aby jeden odkaz neunikl.

Viz také vypůjčený odkaz.

subscript

Výraz v hranatých závorkách indexovacího výrazu, například 3 v items[3]. Obvykle slouží k výběru prvku kontejneru. Nazývá se také klíč při indexování mapování nebo index při indexování posloupnosti.

synchronization primitive

Základní stavební prvek pro koordinaci (synchronizaci) provádění více vláken zajišťující bezpečný přístup ke sdíleným prostředkům z více vláken. Modul threading poskytuje několik synchronizačních primitiv, mezi něž patří Lock, RLock, Semaphore, Condition, Event a Barrier. Modul queue navíc poskytuje fronty s více producenty a konzumenty, které jsou zvlášť užitečné ve vícevláknových programech. Tato primitiva pomáhají předcházet souběhům a koordinovat běh vláken. Viz také zámek.

t-string
t-strings

Řetězcové literály s předponou t nebo T se běžně nazývají „t-řetězce“, což je zkrácený název pro šablonové řetězcové literály.

text encoding

Řetězec je v Pythonu posloupností kódových bodů Unicode (v rozsahu U+0000–U+10FFFF). Aby jej bylo možné uložit nebo přenést, musí být serializován jako posloupnost bajtů.

Serializace řetězce na posloupnost bajtů se nazývá „kódování“ a opětovné vytvoření řetězce z posloupnosti bajtů „dekódování“.

Existuje řada různých kodeků pro serializaci textu, které se souhrnně označují jako „kódování textu“.

text file

Souborový objekt, který dokáže číst a zapisovat objekty str. Textový soubor často ve skutečnosti přistupuje k bajtově orientovanému proudu dat a automaticky zajišťuje kódování textu. Příklady textových souborů jsou soubory otevřené v textovém režimu ('r' nebo 'w'), sys.stdin, sys.stdout a instance io.StringIO.

Viz také binární soubor, tedy souborový objekt schopný číst a zapisovat objekty podobné bajtům.

thread state

Informace, které běhové prostředí CPythonu používá při běhu ve vláknu operačního systému. Patří sem například aktuální výjimka, pokud nějaká existuje, a stav interpretu bajtkódu.

Každý stav vlákna je svázán s jediným vláknem operačního systému, vlákna však mohou mít k dispozici více stavů. Současně může být nejvýše jeden z nich připojený.

Připojený stav vlákna je vyžadován pro volání většiny C API Pythonu, pokud dokumentace funkce výslovně neuvádí jinak. Interpret bajtkódu běží pouze s připojeným stavem vlákna.

Každý stav vlákna patří jedinému interpretu, ale každý interpret může mít mnoho stavů vláken, včetně několika pro stejné vlákno operačního systému. Stavy vláken více interpretů mohou být svázány se stejným vláknem, ale v daném okamžiku v něm může být pouze jeden připojený.

Více informací uvádí stav vlákna a globální zámek interpretu.

thread-safe

Modul, funkce nebo třída, která se chová správně při souběžném použití více vlákny. Kód bezpečný ve více vláknech používá vhodná synchronizační primitiva, například zámky, k ochraně sdíleného měnitelného stavu, nebo je navržen tak, aby se mu zcela vyhnul. V sestavení bez GIL používají vestavěné typy jako dict, list a set interní zamykání, které zajišťuje bezpečnost mnoha operací ve více vláknech, ačkoli není nutně zaručena vždy. Kód, který ve více vláknech bezpečný není, může při použití ve vícevláknových programech narazit na souběhy a datové souběhy.

token

Malá jednotka zdrojového kódu vytvářená lexikálním analyzátorem (nazývaným také tokenizér). Tokeny představují názvy, čísla, řetězce, operátory, konce řádků a podobné prvky.

Modul tokenize zpřístupňuje lexikální analyzátor Pythonu. Modul token obsahuje informace o různých typech tokenů.

triple-quoted string

Řetězec ohraničený třemi uvozovkami (“) nebo třemi apostrofy (‚). Přestože nenabízí žádnou funkcionalitu nedostupnou řetězcům s jednoduchými uvozovkami, je užitečný z několika důvodů. Umožňuje do řetězce zahrnout jednoduché i dvojité uvozovky bez řídicího znaku a může bez znaku pokračování přesahovat přes více řádků, což se hodí zejména při psaní dokumentačních řetězců.

type

Typ objektu Pythonu určuje, o jaký druh objektu jde; každý objekt má svůj typ. Typ objektu je dostupný jako jeho atribut __class__ nebo jej lze získat pomocí type(obj).

type alias

Synonymum typu vytvořené přiřazením typu identifikátoru.

Aliasy typů jsou užitečné ke zjednodušení typových nápověd. Například:

def remove_gray_shades(
        colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
    pass

lze učinit čitelnějším takto:

Color = tuple[int, int, int]

def remove_gray_shades(colors: list[Color]) -> list[Color]:
    pass

Tuto funkcionalitu popisuje modul typing a PEP 484.

type hint

Anotace, která určuje očekávaný typ proměnné, atributu třídy, parametru funkce nebo návratové hodnoty.

Typové nápovědy jsou volitelné a Python je nevynucuje, jsou však užitečné pro statické kontroly typů. Mohou také pomoci vývojovým prostředím s doplňováním kódu a refaktorizací.

K typovým nápovědám globálních proměnných, atributů tříd a funkcí, nikoli však místních proměnných, lze přistupovat funkcí typing.get_type_hints().

Tuto funkcionalitu popisuje modul typing a PEP 484.

universal newlines

Způsob interpretace textových proudů, při němž se za konec řádku považují všechny následující podoby: unixová konvence '\n', konvence Windows '\r\n' a stará konvence systému Macintosh '\r'. Viz PEP 278 a PEP 3116; další použití uvádí také bytes.splitlines().

variable annotation

Anotace proměnné nebo atributu třídy.

Při anotování proměnné nebo atributu třídy je přiřazení volitelné:

class C:
    field: 'annotation'

Anotace proměnných se obvykle používají pro typové nápovědy: od následující proměnné se například očekávají hodnoty typu int:

count: int = 0

Syntaxi anotací proměnných vysvětluje oddíl Annotated assignment statements.

Tuto funkcionalitu popisuje také heslo anotace funkce, PEP 484 a PEP 526. Doporučené postupy pro práci s anotacemi uvádí Annotations Best Practices.

virtual environment

Kooperativně izolované běhové prostředí, které uživatelům a aplikacím Pythonu umožňuje instalovat a aktualizovat distribuční balíčky Pythonu, aniž by ovlivnili chování jiných aplikací Pythonu běžících ve stejném systému.

Viz také modul venv.

virtual machine

Počítač definovaný výhradně softwarem. Virtuální stroj Pythonu provádí bajtkód vytvořený kompilátorem bajtkódu.

walrus operator

Žertovné označení operátoru := pro přiřazovací výraz, protože při naklonění hlavy trochu připomíná mrože.

Zen of Python

Přehled návrhových zásad a filozofie Pythonu, které pomáhají porozumět jazyku a používat jej. Přehled zobrazíte zadáním „import this“ do interaktivní výzvy.