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 funkceisinstance()aissubclass()je přesto rozpoznají; viz dokumentace moduluabc. Python obsahuje řadu vestavěných ABC pro datové struktury (v modulucollections.abc), čísla (v modulunumbers), proudy (v moduluio) a vyhledávače a zavaděče importů (v moduluimportlib.abc). Vlastní ABC můžete vytvářet pomocí moduluabc.- 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říklad3a5jsou v následujících voláníchcomplex()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říklad3a5jsou 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 withdefinová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ýrazyyield, které vytvářejí posloupnost hodnot použitelnou v cykluasync 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
awaiti příkazyasync foraasync 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ýrazuyield.Každý
yielddoč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říkazasync forvyhodnocuje čekatelné objekty vracené metodou__anext__()asynchronního iterátoru, dokud tato metoda nevyvolá výjimkuStopAsyncIteration. 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 += 1prová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.buffera instance třídio.BytesIOagzip.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. FunkciPy_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,bytearrayaarray.arrayi 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í
bytearrayamemoryviewobjektubytearray. 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říbytesamemoryviewobjektubytes.- 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
innerv následujícím kódu jsouxiprintvolné proměnné, ale pouzexje 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 jakoia v technických oborech jakoj. Python komplexní čísla přímo podporuje a používá druhý z těchto zápisů; imaginární část má příponuj, například3+1j. Komplexní obdobu modulumathposkytuje modulcmath. 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.
asyncioslouží k práci s asynchronními úlohami a korutinami.threadingposkytuje přístup k vláknům operačního systému amultiprocessingk 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ří:
Dočasný stav nebo prostředí vytvořené správcem kontextu prostřednictvím příkazu
with.Soubor vazeb klíč–hodnota přidružený ke konkrétnímu objektu
contextvars.Contexta zpřístupněný prostřednictvím objektůContextVar. Viz také kontextová proměnná.Objekt
contextvars.Context. Viz také aktuální kontext.
- context management protocol¶
Metody
__enter__()a__exit__(), které volá příkazwith. 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 defa může obsahovat klíčová slovaawait,async foraasync 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ý objektyContextVarprá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 (vizasyncio) 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ů jsouclassmethod()astaticmethod().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íčnmapován na hodnotun ** 2. Viz Displays for lists, sets and dictionaries.- dictionary view¶
Objekty vracené metodami
dict.keys(),dict.values()adict.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žijtelist(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()neboisinstance(). (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ů
tryaexcept. 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
fneboFse 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()nebowrite()). 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í funkceopen().- 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()asys.getfilesystemencodeerrors().Kódování souborového systému a obsluha chyb se při spuštění Pythonu nastavují funkcí
PyConfig_Read(); viz členyfilesystem_encodingafilesystem_errorstypuPyConfig.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_patha vyhledávače položek cesty používané ssys.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ýraz11 // 4se například vyhodnotí jako2, na rozdíl od hodnoty2.75vrácené skutečným dělením čísel s plovoucí desetinnou čárkou. Všimněte si, že(-11) // 4je-3, protože jde o hodnotu-2.75zaokrouhlenou 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.- 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_freevarsně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
inta vrátí rovněž hodnotu typuint: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ý
yielddoč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
listnebodict. 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¶
- 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=0nebo 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
TrueaNone.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 objektuthingsathings[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
pythonbez 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 nahelp(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,stratuple) a některé neposloupnostní typy, jako jedict, 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
fora na mnoha dalších místech, kde je zapotřebí posloupnost (zip(),map(), …). Předáte-li iterovatelný objekt vestavěné funkciiter()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é volatiter()ani se o iterátory starat ručně. Příkazforto 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é funkcinext()) vracejí postupně další položky proudu. Když již nejsou žádná data k dispozici, vyvolá se místo toho výjimkaStopIteration. 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říkladlist) vytvoří nový iterátor pokaždé, když jej předáte funkciiter()nebo použijete v cyklufor. 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()aitertools.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ýrazulambda, napříkladlambda r: (r[0], r[2]). Dalšími třemi konstruktory funkcí klíče jsouoperator.attrgetter(),operator.itemgetter()aoperator.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. Klauzuleifje volitelná. Pokud ji vynecháte, zpracují se všechny prvky vrange(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
threadingposkytuje tříduLock(základní zámek) aRLock(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
dictalist, č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()acreate_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().- 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.Mappingnebocollections.abc.MutableMapping; viz Collections Abstract Base Classes. Příklady zahrnujídict,collections.defaultdict,collections.OrderedDictacollections.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¶
- 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()aos.stat(). Dalším příkladem jesys.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
tuplea definuje pojmenovaná pole. Takovou třídu lze napsat ručně, vytvořit odvozením odtyping.NamedTuplenebo 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.openaos.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ápisrandom.seed()neboitertools.islice()například ukazuje, že tyto funkce implementují modulyrandom, respektiveitertools.- 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
nonlocalumožň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
dictalist, 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čibytespředstavující cestu, nebo objekt implementující protokolos.PathLike. Objekt podporující protokolos.PathLikelze převést na cestu souborového systému typustrnebobytesvoláním funkceos.fspath(); funkceos.fsdecode(), respektiveos.fsencode(), lze použít k zaručení výsledku typustr, respektivebytes. 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.RLockPythonu reentrantní, takže vlákno, které jej již drží, jej může získat znovu bez zablokování. Naproti tomuthreading.Lockreentrantní není — pokus získat jej dvakrát ze stejného vlákna způsobí 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,tupleabytes. Takédictpodporuje 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.Sequencedefinuje 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říkladvariable_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í.
- 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čifor.- 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ímPy_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é zavolatPy_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
3vitems[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
threadingposkytuje několik synchronizačních primitiv, mezi něž patříLock,RLock,Semaphore,Condition,EventaBarrier. Modulqueuenaví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
tneboTse 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.stdouta instanceio.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,listasetinterní 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
tokenizezpřístupňuje lexikální analyzátor Pythonu. Modultokenobsahuje 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
- 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().- 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.