Vestavěné funkce¶
Interpret Pythonu obsahuje řadu vestavěných funkcí a typů, které jsou vždy dostupné. Zde jsou uvedeny v abecedním pořadí.
Vestavěné funkce |
|||
|---|---|---|---|
- abs(number, /)¶
Vrátí absolutní hodnotu čísla. Argumentem může být celé číslo, číslo s plovoucí řádovou čárkou nebo objekt implementující metodu
__abs__(). Je-li argumentem komplexní číslo, vrátí se jeho velikost.
- aiter(async_iterable, /)¶
Vrátí asynchronní iterátor pro asynchronní iterovatelný objekt. Odpovídá volání
x.__aiter__().Poznámka: Na rozdíl od
iter()nemáaiter()variantu se dvěma argumenty.Added in version 3.10.
- all(iterable, /)¶
Vrátí
True, pokud jsou všechny prvky iterovatelného objektu pravdivé (nebo pokud je iterovatelný objekt prázdný). Odpovídá zápisu:def all(iterable): for element in iterable: if not element: return False return True
- awaitable anext(async_iterator, /)¶
- awaitable anext(async_iterator, default, /)
Při vyhodnocení vrátí další položku zadaného asynchronního iterátoru, případně hodnotu default, pokud byla zadána a iterátor je vyčerpán.
Jde o asynchronní variantu vestavěné funkce
next(), která se chová obdobně.Funkce zavolá metodu
__anext__()objektu async_iterator, která vrátí awaitable objekt. Jeho vyhodnocení poskytne další hodnotu iterátoru. Je-li zadána hodnota default, vrátí se při vyčerpání iterátoru; jinak se vyvolá výjimkaStopAsyncIteration.Added in version 3.10.
- any(iterable, /)¶
Vrátí
True, pokud je alespoň jeden prvek iterovatelného objektu pravdivý. Je-li iterovatelný objekt prázdný, vrátíFalse. Odpovídá zápisu:def any(iterable): for element in iterable: if element: return True return False
- ascii(object, /)¶
Podobně jako
repr()vrátí řetězec obsahující tisknutelnou reprezentaci objektu, znaky mimo ASCII však v řetězci vráceném funkcírepr()escapuje pomocí sekvencí\x,\unebo\U. Vytvoří tak řetězec podobný výsledku funkcerepr()v Pythonu 2.
- bin(integer, /)¶
Převede celé číslo na binární řetězec s prefixem „0b“. Výsledkem je platný výraz Pythonu. Není-li integer objektem třídy
int, musí definovat metodu__index__(), která vrací celé číslo. Několik příkladů:>>> bin(3) '0b11' >>> bin(-10) '-0b1010'
Podle toho, zda chcete prefix „0b“ zahrnout, můžete použít některý z následujících způsobů.
>>> format(14, '#b'), format(14, 'b') ('0b1110', '1110') >>> f'{14:#b}', f'{14:b}' ('0b1110', '1110')
Reprezentaci záporných hodnot pomocí dvojkového doplňku nabízí také
enum.bin().Další informace najdete také u funkce
format().
- class bool(object=False, /)¶
Vrátí booleovskou hodnotu, tedy
TrueneboFalse. Argument se převede pomocí standardního vyhodnocení pravdivosti. Je-li argument nepravdivý nebo vynechaný, vrátíFalse; jinak vrátíTrue. Třídaboolje podtřídouint(viz Numeric Types — int, float, complex) a nelze ji dále odvozovat. Jejími jedinými instancemi jsouFalseaTrue(viz Boolean Type - bool).Změněno ve verzi 3.7: Parametr je nyní pouze poziční.
- breakpoint(*args, **kws)¶
Tato funkce v místě volání spustí debugger. Konkrétně zavolá
sys.breakpointhook()a přímo mu předáargsakws. Ve výchozím nastavení volásys.breakpointhook()funkcipdb.set_trace(), která neočekává žádné argumenty. V takovém případě jde čistě o usnadnění práce, díky němuž nemusíte explicitně importovatpdbani psát tolik kódu pro vstup do debuggeru.sys.breakpointhook()však lze nastavit na jinou funkci abreakpoint()ji automaticky zavolá, takže můžete vstoupit do zvoleného debuggeru. Není-lisys.breakpointhook()dostupná, funkce vyvoláRuntimeError.Výchozí chování funkce
breakpoint()lze změnit proměnnou prostředíPYTHONBREAKPOINT. Podrobnosti o použití najdete usys.breakpointhook().Pokud byla
sys.breakpointhook()nahrazena, není toto chování zaručeno.Auditní událost
Vyvolá auditní událost
builtins.breakpoints argumentybreakpointhook.Added in version 3.7.
- class bytearray(source=b'')
- class bytearray(source, encoding, errors='strict')
Vrátí nové pole bajtů. Třída
bytearrayje měnitelná sekvence celých čísel v rozsahu 0 <= x < 256. Poskytuje většinu obvyklých metod měnitelných sekvencí popsaných v Mutable Sequence Types a také většinu metod typubytes, viz Bytes and Bytearray Operations.Nepovinným parametrem source lze pole inicializovat několika způsoby:
Jde-li o řetězec, musíte zadat také parametr encoding (a volitelně errors);
bytearray()poté řetězec převede na bajty pomocístr.encode().Jde-li o celé číslo, pole bude mít zadanou velikost a inicializuje se nulovými bajty.
Jde-li o objekt vyhovující rozhraní bufferu, použije se k inicializaci pole bajtů buffer objektu určený pouze pro čtení.
Jde-li o iterovatelný objekt, musí poskytovat celá čísla v rozsahu
0 <= x < 256, která se použijí jako počáteční obsah pole.
Bez argumentu se vytvoří pole o velikosti 0.
Viz také Binary Sequence Types — bytes, bytearray, memoryview a Bytearray Objects.
- class bytes(source=b'')
- class bytes(source, encoding, errors='strict')
Vrátí nový objekt „bytes“, který je neměnnou sekvencí celých čísel v rozsahu
0 <= x < 256.bytesje neměnnou variantoubytearray— má stejné metody, které objekt nemění, a stejné chování při indexování a vytváření výřezů.Argumenty konstruktoru se proto interpretují stejně jako u
bytearray().Objekty bytes lze vytvářet také pomocí literálů, viz String and Bytes literals.
Viz také Binary Sequence Types — bytes, bytearray, memoryview, Bytes Objects a Bytes and Bytearray Operations.
- callable(object, /)¶
Vrátí
True, pokud se argument object jeví jako volatelný, jinakFalse. Vrátí-li funkceTrue, může volání přesto selhat; vrátí-li všakFalse, volání objektu object nikdy neuspěje. Třídy jsou volatelné (volání třídy vrátí novou instanci); instance jsou volatelné, pokud jejich třída obsahuje metodu__call__().Added in version 3.2: Funkce byla nejprve v Pythonu 3.0 odstraněna a v Pythonu 3.2 znovu přidána.
- chr(codepoint, /)¶
Vrátí řetězec představující znak se zadaným kódovým bodem Unicode. Například
chr(97)vrátí řetězec'a', zatímcochr(8364)vrátí řetězec'€'. Jde o inverzní funkci kord().Platný rozsah argumentu je od 0 do 1 114 111 (0x10FFFF v šestnáctkové soustavě). Hodnota mimo tento rozsah vyvolá
ValueError.
- @classmethod¶
Převede metodu na metodu třídy.
Metoda třídy přijímá třídu jako implicitní první argument, podobně jako instanční metoda přijímá instanci. Metodu třídy deklarujete tímto zápisem:
class C: @classmethod def f(cls, arg1, arg2): ...
Zápis
@classmethodje dekorátor funkce — podrobnosti najdete v Function definitions.Metodu třídy lze volat na třídě (například
C.f()) i na instanci (napříkladC().f()). Instance se kromě určení její třídy ignoruje. Je-li metoda třídy volána pro odvozenou třídu, předá se objekt odvozené třídy jako implicitní první argument.Metody třídy se liší od statických metod v C++ nebo Javě. Pokud potřebujete statickou metodu, viz
staticmethod()v této části. Další informace o metodách třídy najdete v The standard type hierarchy.Změněno ve verzi 3.9: Metody třídy nyní mohou obalovat jiné deskriptory, například
property().Změněno ve verzi 3.10: Metody třídy nyní přebírají atributy metody (
__module__,__name__,__qualname__,__doc__a__annotations__) a mají nový atribut__wrapped__.Zastaralé od verze 3.11, odstraněno ve verzi 3.13: Metody třídy již nemohou obalovat jiné deskriptory, například
property().
- compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)¶
Zkompiluje source do objektu kódu nebo AST. Objekty kódu lze spustit pomocí
exec()neboeval(). source může být běžný řetězec, bajtový řetězec nebo objekt AST. Informace o práci s objekty AST najdete v dokumentaci moduluast.Argument filename by měl určovat soubor, ze kterého byl kód načten. Pokud nebyl načten ze souboru, předejte nějakou rozpoznatelnou hodnotu (běžně se používá
'<string>').Argument mode určuje druh kompilovaného kódu. Může mít hodnotu
'exec', pokud source tvoří posloupnost příkazů,'eval', pokud jej tvoří jediný výraz, nebo'single', pokud jej tvoří jediný interaktivní příkaz (v posledním případě se vypíší příkazy výrazů, jejichž výsledkem neníNone).Nepovinné argumenty flags a dont_inherit určují, které volby kompilátoru se aktivují a které budoucí vlastnosti se povolí. Není-li zadán ani jeden z nich (nebo jsou oba nulové), kód se zkompiluje se stejnými příznaky, které působí na kód volající
compile(). Je-li zadán argument flags a dont_inherit zadán není (nebo je nulový), použijí se volby kompilátoru a příkazy future určené argumentem flags navíc k těm, které by se použily tak jako tak. Je-li dont_inherit nenulové celé číslo, použije se výhradně argument flags — příznaky okolního kódu (budoucí vlastnosti a volby kompilátoru) se ignorují.Volby kompilátoru a příkazy future se určují bity, které lze bitově spojovat operátorem OR a zadat tak více voleb. Bitové pole potřebné pro konkrétní budoucí vlastnost najdete v atributu
compiler_flaginstance_Featurev modulu__future__. Příznaky kompilátoru s prefixemPyCF_najdete v moduluast.Argument optimize určuje úroveň optimalizace kompilátoru. Výchozí hodnota
-1vybere úroveň optimalizace interpretu danou volbami-O. Explicitní úrovně jsou0(bez optimalizace;__debug__je pravdivé),1(příkazy assert se odstraní a__debug__je nepravdivé) nebo2(odstraní se také dokumentační řetězce).Pokud kompilovaný zdroj není platný, funkce vyvolá
SyntaxErrorneboValueError.Chcete-li kód Pythonu zpracovat do reprezentace AST, viz
ast.parse().Auditní událost
Vyvolá auditní událost
compiles argumentysourceafilename. Tuto událost může vyvolat také implicitní kompilace.Poznámka
Při kompilaci řetězce s víceřádkovým kódem v režimu
'single'nebo'eval'musí být vstup ukončen alespoň jedním znakem nového řádku. Usnadňuje to rozpoznávání neúplných a úplných příkazů v modulucode.Varování
Při kompilaci dostatečně velkého nebo složitého řetězce do objektu AST může kvůli omezené hloubce zásobníku kompilátoru AST dojít k pádu interpretu Pythonu.
Změněno ve verzi 3.2: Bylo povoleno použití znaků konce řádku Windows a Mac. Vstup v režimu
'exec'již také nemusí končit novým řádkem. Byl přidán parametr optimize.Změněno ve verzi 3.5: Při výskytu nulových bajtů ve source se dříve vyvolala
TypeError.Added in version 3.8: V příznacích lze nyní předat
ast.PyCF_ALLOW_TOP_LEVEL_AWAITa povolit tak podporuawait,async foraasync withna nejvyšší úrovni.
- class complex(number=0, /)¶
- class complex(string, /)
- class complex(real=0, imag=0)
Převede jeden řetězec nebo číslo na komplexní číslo, případně vytvoří komplexní číslo z reálné a imaginární části.
Příklady:
>>> complex('+1.23') (1.23+0j) >>> complex('-4.5j') -4.5j >>> complex('-1.23+4.5j') (-1.23+4.5j) >>> complex('\t( -1.23+4.5J )\n') (-1.23+4.5j) >>> complex('-Infinity+NaNj') (-inf+nanj) >>> complex(1.23) (1.23+0j) >>> complex(imag=-4.5) -4.5j >>> complex(-1.23, 4.5) (-1.23+4.5j)
Je-li argumentem řetězec, musí obsahovat buď reálnou část (ve stejném formátu jako u
float()), nebo imaginární část (ve stejném formátu, avšak s příponou'j'či'J'), případně reálnou i imaginární část (v tomto případě je znaménko imaginární části povinné). Řetězec může být obklopen prázdnými znaky a kulatými závorkami'('a')', které se ignorují. Řetězec nesmí obsahovat prázdné znaky mezi'+','-', příponou'j'nebo'J'a desetinným číslem. Napříkladcomplex('1+2j')je platné, alecomplex('1 + 2j')vyvoláValueError. Přesněji řečeno musí vstup po odstranění závorek a úvodních i koncových prázdných znaků odpovídat syntaktickému pravidlucomplexvaluev následující gramatice:complexvalue ::=
floatvalue|floatvalue("j" | "J") |floatvaluesignabsfloatvalue("j" | "J")Je-li argumentem číslo, slouží konstruktor k číselnému převodu podobně jako
intafloat. U obecného objektu Pythonuxdelegujecomplex(x)nax.__complex__(). Není-li definována__complex__(), použije se__float__(). Není-li definována ani__float__(), použije se__index__().Jsou-li zadány dva argumenty nebo použity argumenty klíčových slov, může být každý argument libovolného číselného typu (včetně komplexního). Jsou-li oba argumenty reálná čísla, vrátí komplexní číslo s reálnou složkou real a imaginární složkou imag. Jsou-li oba argumenty komplexní čísla, vrátí komplexní číslo s reálnou složkou
real.real-imag.imaga imaginární složkoureal.imag+imag.real. Je-li jeden z argumentů reálné číslo, použije se ve výše uvedených výrazech pouze jeho reálná složka.Viz také
complex.from_number(), která přijímá pouze jeden číselný argument.Jsou-li všechny argumenty vynechány, vrátí
0j.Komplexní typ je popsán v Numeric Types — int, float, complex.
Změněno ve verzi 3.6: Je povoleno seskupování číslic pomocí podtržítek stejně jako v číselných literálech.
Změněno ve verzi 3.8: Na
__index__()se přejde, nejsou-li definovány__complex__()ani__float__().Zastaralé od verze 3.14: Předávání komplexního čísla jako argumentu real nebo imag je nyní zastaralé; mělo by se předávat pouze jako jediný poziční argument.
- delattr(object, name, /)¶
Tato funkce je příbuzná s
setattr(). Argumenty jsou objekt a řetězec. Řetězec musí být názvem jednoho z atributů objektu. Pokud to objekt dovoluje, funkce pojmenovaný atribut odstraní. Napříkladdelattr(x, 'foobar')odpovídá zápisudel x.foobar. name nemusí být identifikátorem Pythonu (vizsetattr()).
- class dict(**kwargs)
- class dict(mapping, /, **kwargs)
- class dict(iterable, /, **kwargs)
Vytvoří nový slovník. Objekt
dictje třídou slovníku. Dokumentaci této třídy najdete udicta v Mapping Types — dict.Další kontejnery popisují vestavěné třídy
list,setatuplea také modulcollections.
- dir()¶
- dir(object, /)
Bez argumentu vrátí seznam názvů v aktuálním lokálním oboru platnosti. S argumentem se pokusí vrátit seznam platných atributů daného objektu.
Má-li objekt metodu
__dir__(), tato metoda se zavolá a musí vrátit seznam atributů. Objekty implementující vlastní funkci__getattr__()nebo__getattribute__()tak mohou přizpůsobit způsob, jakýmdir()vypisuje jejich atributy.Neposkytuje-li objekt
__dir__(), pokusí se funkce co nejlépe shromáždit informace z atributu objektu__dict__, je-li definován, a z objektu jeho typu. Výsledný seznam nemusí být úplný a může být nepřesný, pokud má objekt vlastní__getattr__().Výchozí mechanismus
dir()se u různých typů objektů chová odlišně, protože se snaží poskytnout spíše nejrelevantnější než úplné informace:Je-li objekt modulem, seznam obsahuje názvy atributů modulu.
Je-li objekt typem nebo třídou, seznam obsahuje názvy jeho atributů a rekurzivně také atributů jeho bází.
V ostatních případech seznam obsahuje názvy atributů objektu, názvy atributů jeho třídy a rekurzivně také atributů bázových tříd jeho třídy.
Výsledný seznam je seřazen abecedně. Například:
>>> import struct >>> dir() # show the names in the module namespace ['__builtins__', '__name__', 'struct'] >>> dir(struct) # show the names in the struct module ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Shape: ... def __dir__(self): ... return ['area', 'perimeter', 'location'] ... >>> s = Shape() >>> dir(s) ['area', 'location', 'perimeter']
Poznámka
Protože je
dir()určena především pro pohodlné použití na interaktivní výzvě, snaží se spíše poskytnout zajímavou množinu názvů než přesně a konzistentně definovanou množinu. Její podrobné chování se proto může mezi vydáními měnit. Pokud je například argumentem třída, nejsou ve výsledném seznamu atributy metatřídy.
- divmod(a, b, /)¶
Přijme dvě čísla (nikoli komplexní) a vrátí dvojici čísel tvořenou jejich podílem a zbytkem při celočíselném dělení. U smíšených typů operandů platí pravidla binárních aritmetických operátorů. Pro celá čísla je výsledek stejný jako
(a // b, a % b). Pro čísla s plovoucí řádovou čárkou je výsledkem(q, a % b), kde q obvykle odpovídámath.floor(a / b), může však být o 1 menší. V každém případě jeq * b + a % bvelmi blízko a; je-lia % bnenulové, má stejné znaménko jako b a platí0 <= abs(a % b) < abs(b).
- enumerate(iterable, start=0)¶
Vrátí objekt enumerate. iterable musí být sekvence, iterátor nebo jiný objekt podporující iteraci. Metoda
__next__()iterátoru vráceného funkcíenumerate()poskytuje n-tici obsahující pořadové číslo (od hodnoty start, jejíž výchozí hodnota je 0) a hodnotu získanou iterací přes iterable.>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
Odpovídá zápisu:
def enumerate(iterable, start=0): n = start for elem in iterable: yield n, elem n += 1
- eval(source, /, globals=None, locals=None)¶
- Parametry:
source (
str| code object) – Výraz Pythonu.globals (
dict|None) – Globální jmenný prostor (výchozí hodnota:None).locals (mapping |
None) – Lokální jmenný prostor (výchozí hodnota:None).
- Vrací:
Výsledek vyhodnoceného výrazu.
- Raises:
Syntaktické chyby se oznamují jako výjimky.
Varování
Tato funkce spouští libovolný kód. Její volání s nedůvěryhodným vstupem poskytnutým uživatelem vede k bezpečnostním zranitelnostem.
Argument source se zpracuje a vyhodnotí jako výraz Pythonu (technicky jako seznam podmínek), přičemž mapování globals a locals slouží jako globální a lokální jmenný prostor. Je-li zadán slovník globals a neobsahuje hodnotu pro klíč
__builtins__, vloží se pod tento klíč před zpracováním source odkaz na slovník vestavěného modulubuiltins. Přepsáním__builtins__lze omezit nebo změnit dostupné názvy, nejde však o bezpečnostní mechanismus: spuštěný kód má stále přístup ke všem vestavěným objektům. Je-li mapování locals vynecháno, použije se jako výchozí slovník globals. Jsou-li obě mapování vynechána, zdroj se spustí s hodnotami globals a locals prostředí, ve kterém se voláeval(). Pozor, eval() bude mít přístup k vnořeným oborům platnosti (nelokálním názvům) okolního prostředí pouze tehdy, pokud se na ně již odkazuje obor platnosti volajícíeval()(například prostřednictvím příkazunonlocal).Příklad:
>>> x = 1 >>> eval('x+1') 2
Funkci lze použít také ke spuštění libovolných objektů kódu (například vytvořených funkcí
compile()). V takovém případě předejte místo řetězce objekt kódu. Pokud byl objekt kódu zkompilován s argumentem mode nastaveným na'exec', bude návratovou hodnotoueval()hodnotaNone.Tip: Dynamické spouštění příkazů podporuje funkce
exec(). Funkceglobals()alocals()vracejí aktuální globální, respektive lokální slovník, které lze předávat pro použití funkcemieval()neboexec().Je-li zadaný zdroj řetězcem, odstraní se z něj úvodní a koncové mezery a tabulátory.
Funkci pro vyhodnocování řetězců s výrazy obsahujícími pouze literály nabízí
ast.literal_eval().Auditní událost
Vyvolá auditní událost
execs objektem kódu jako argumentem. Mohou se vyvolat také události kompilace kódu.Změněno ve verzi 3.13: Argumenty globals a locals lze nyní předávat jako klíčová slova.
Změněno ve verzi 3.13: Sémantika výchozího jmenného prostoru locals byla upravena podle popisu vestavěné funkce
locals().
- exec(source, /, globals=None, locals=None, *, closure=None)¶
Varování
Tato funkce spouští libovolný kód. Její volání s nedůvěryhodným vstupem poskytnutým uživatelem vede k bezpečnostním zranitelnostem.
Tato funkce podporuje dynamické spouštění kódu Pythonu. source musí být řetězec nebo objekt kódu. Jde-li o řetězec, zpracuje se jako blok příkazů Pythonu, který se následně spustí (pokud nedojde k syntaktické chybě). [1] Jde-li o objekt kódu, jednoduše se spustí. Spouštěný kód musí být ve všech případech platný jako vstup ze souboru (viz část File input v Referenční příručce). Pamatujte, že příkazy
nonlocal,yieldareturnnelze použít mimo definice funkcí ani v kódu předaném funkciexec(). Návratovou hodnotou jeNone.Jsou-li nepovinné části vynechány, spustí se kód ve všech případech v aktuálním oboru platnosti. Je-li zadáno pouze globals, musí jít o slovník (nikoli podtřídu slovníku), který se použije pro globální i lokální proměnné. Jsou-li zadány globals i locals, použijí se pro globální, respektive lokální proměnné. Zadané locals může být libovolný mapovací objekt. Pamatujte, že na úrovni modulu jsou globals a locals stejným slovníkem.
Poznámka
Obdrží-li
execdva samostatné objekty globals a locals, spustí se kód tak, jako by byl vložen do definice třídy. Funkce a třídy definované ve spuštěném kódu proto nebudou mít přístup k proměnným přiřazeným na nejvyšší úrovni (protože se s proměnnými „nejvyšší úrovně“ zachází jako s proměnnými třídy v její definici).Neobsahuje-li slovník globals hodnotu pro klíč
__builtins__, vloží se pod něj odkaz na slovník vestavěného modulubuiltins. Přepsáním__builtins__lze omezit nebo změnit dostupné názvy, nejde však o bezpečnostní mechanismus: spuštěný kód má stále přístup ke všem vestavěným objektům.Argument closure určuje uzávěr — n-tici buněčných proměnných. Je platný pouze tehdy, když je object objektem kódu obsahujícím volné proměnné uzávěru. Délka n-tice musí přesně odpovídat délce atributu
co_freevarsobjektu kódu.Auditní událost
Vyvolá auditní událost
execs objektem kódu jako argumentem. Mohou se vyvolat také události kompilace kódu.Poznámka
Vestavěné funkce
globals()alocals()vracejí aktuální globální, respektive lokální jmenný prostor. Lze je proto předat jako druhý a třetí argument funkceexec().Poznámka
Výchozí locals se chová podle popisu funkce
locals()níže. Potřebujete-li po návratu funkceexec()pozorovat účinky kódu na locals, předejte explicitní slovník locals.Změněno ve verzi 3.11: Byl přidán parametr closure.
Změněno ve verzi 3.13: Argumenty globals a locals lze nyní předávat jako klíčová slova.
Změněno ve verzi 3.13: Sémantika výchozího jmenného prostoru locals byla upravena podle popisu vestavěné funkce
locals().
- filter(function, iterable, /)¶
Vytvoří iterátor z těch prvků objektu iterable, pro něž je function pravdivá. iterable může být sekvence, kontejner podporující iteraci nebo iterátor. Je-li function rovna
None, předpokládá se identická funkce, takže se odstraní všechny nepravdivé prvky objektu iterable.filter(function, iterable)je ekvivalentní generátorovému výrazu(item for item in iterable if function(item)), není-li function rovnaNone, a výrazu(item for item in iterable if item), je-li function rovnaNone.Doplňkovou funkci vracející prvky objektu iterable, pro něž je function nepravdivá, popisuje
itertools.filterfalse().
- class float(number=0.0, /)¶
- class float(string, /)
Vrátí číslo s plovoucí řádovou čárkou vytvořené z čísla nebo řetězce.
Příklady:
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
Je-li argument řetězec, měl by obsahovat desetinné číslo, jemuž může předcházet znaménko a které může být obklopeno bílými znaky. Volitelné znaménko může být
'+'nebo'-'; znaménko'+'nemá na výslednou hodnotu žádný vliv. Argument může být také řetězec představující NaN (není číslo) nebo kladné či záporné nekonečno. Přesněji řečeno musí vstup po odstranění počátečních a koncových bílých znaků odpovídat produkčnímu pravidlufloatvaluev následující gramatice:sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" digit ::= <a Unicode decimal digit, i.e. characters in Unicode general category Nd> digitpart ::=
digit(["_"]digit)* number ::= [digitpart] "."digitpart|digitpart["."] exponent ::= ("e" | "E") [sign]digitpartfloatnumber ::=number[exponent] absfloatvalue ::=floatnumber|infinity|nanfloatvalue ::= [sign]absfloatvalueNa velikosti písmen nezáleží, takže například „inf“, „Inf“, „INFINITY“ a „iNfINity“ jsou všechno přípustné zápisy kladného nekonečna.
Je-li argument celé číslo nebo číslo s plovoucí řádovou čárkou, vrátí se číslo s plovoucí řádovou čárkou se stejnou hodnotou (v rámci přesnosti čísel s plovoucí řádovou čárkou v Pythonu). Leží-li argument mimo rozsah typu float v Pythonu, vyvolá se
OverflowError.U obecného objektu Pythonu
xdelegujefloat(x)nax.__float__(). Není-li definována__float__(), použije se__index__().Viz také
float.from_number(), která přijímá pouze číselný argument.Není-li zadán žádný argument, vrátí se
0.0.Typ float popisuje oddíl Numeric Types — int, float, complex.
Změněno ve verzi 3.6: Je povoleno seskupovat číslice podtržítky stejně jako v literálech kódu.
Změněno ve verzi 3.7: Parametr je nyní pouze poziční.
Změněno ve verzi 3.8: Na
__index__()se přejde, není-li definována__float__().
- format(value, format_spec='', /)¶
Převede value na „formátovanou“ reprezentaci řízenou parametrem format_spec. Interpretace format_spec závisí na typu argumentu value; většina vestavěných typů však používá standardní syntaxi formátování: Format specification mini-language.
Výchozí format_spec je prázdný řetězec, který má obvykle stejný účinek jako volání
str(value).Volání
format(value, format_spec)se převede natype(value).__format__(value, format_spec), čímž se při hledání metody__format__()hodnoty obejde slovník instance. VýjimkaTypeErrorse vyvolá, pokud hledání metody dospěje kobjecta format_spec není prázdný, nebo pokud format_spec či návratová hodnota nejsou řetězce.Změněno ve verzi 3.4:
object().__format__(format_spec)vyvoláTypeError, pokud format_spec není prázdný řetězec.
- class frozenset(iterable=(), /)
Vrátí nový objekt
frozenset, volitelně s prvky převzatými z iterable.frozensetje vestavěná třída. Dokumentaci této třídy uvádějífrozenseta Set Types — set, frozenset.Další kontejnery popisují vestavěné třídy
set,list,tupleadicti modulcollections.
- getattr(object, name, /)¶
- getattr(object, name, default, /)
Vrátí hodnotu pojmenovaného atributu objektu object. name musí být řetězec. Je-li řetězec názvem některého atributu objektu, výsledkem je hodnota tohoto atributu. Například
getattr(x, 'foobar')je ekvivalentní výrazux.foobar. Pokud pojmenovaný atribut neexistuje, vrátí se zadaná hodnota default, jinak se vyvoláAttributeError. name nemusí být identifikátor Pythonu (vizsetattr()).Poznámka
Protože k komolení soukromých názvů dochází při kompilaci, je nutné název soukromého atributu (atributu se dvěma počátečními podtržítky) pro získání pomocí
getattr()zkomolit ručně.
- globals()¶
Vrátí slovník implementující jmenný prostor aktuálního modulu. Pro kód uvnitř funkcí se tento prostor určí při definici funkce a zůstává stejný bez ohledu na to, odkud se funkce volá.
- hasattr(object, name, /)¶
Argumenty jsou objekt a řetězec. Výsledkem je
True, pokud je řetězec názvem některého atributu objektu, jinakFalse. (Implementace volágetattr(object, name)a zjišťuje, zda vyvoláAttributeError.)
- hash(object, /)¶
Vrátí hodnotu otisku objektu (pokud ji má). Hodnoty otisku jsou celá čísla. Používají se k rychlému porovnávání klíčů při vyhledávání ve slovníku. Číselné hodnoty, které se porovnají jako shodné, mají stejnou hodnotu otisku (i když jsou různých typů, jako například 1 a 1.0).
Poznámka
U objektů s vlastní metodou
__hash__()mějte na paměti, žehash()zkrátí návratovou hodnotu podle bitové šířky hostitelského počítače.
- help()¶
- help(request)
Spustí vestavěný systém nápovědy. (Tato funkce je určena k interaktivnímu použití.) Není-li zadán argument, spustí se interaktivní nápověda v konzoli interpretu. Je-li argument řetězec, vyhledá se jako název modulu, funkce, třídy, metody, klíčového slova nebo tématu dokumentace a v konzoli se vypíše stránka nápovědy. U argumentu jakéhokoli jiného druhu se vytvoří stránka nápovědy k danému objektu.
Objeví-li se při volání
help()v seznamu parametrů funkce lomítko (/), znamená to, že parametry před lomítkem jsou pouze poziční. Další informace uvádí položka FAQ o pouze pozičních parametrech.Tuto funkci přidává do vestavěného jmenného prostoru modul
site.
- hex(integer, /)¶
Převede celé číslo na řetězec s malými šestnáctkovými číslicemi a předponou „0x“. Není-li integer objektem
intPythonu, musí definovat metodu__index__(), která vrací celé číslo. Několik příkladů:>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
Chcete-li převést celé číslo na řetězec s velkými nebo malými šestnáctkovými číslicemi, s předponou či bez ní, můžete použít některý z následujících způsobů:
>>> '%#x' % 255, '%x' % 255, '%X' % 255 ('0xff', 'ff', 'FF') >>> format(255, '#x'), format(255, 'x'), format(255, 'X') ('0xff', 'ff', 'FF') >>> f'{255:#x}', f'{255:x}', f'{255:X}' ('0xff', 'ff', 'FF')
Další informace uvádí
format().Převod šestnáctkového řetězce na celé číslo se základem 16 popisuje také
int().Poznámka
Šestnáctkovou řetězcovou reprezentaci čísla float získáte metodou
float.hex().
- id(object, /)¶
Vrátí „identitu“ objektu. Jde o celé číslo, které je po dobu života objektu zaručeně jedinečné a neměnné. Dva objekty s nepřekrývající se dobou života mohou mít stejnou hodnotu
id().Implementační detail CPythonu
Jde o adresu objektu v paměti.
Auditní událost
Vyvolá auditní událost
builtins.ids argumentyid.
- input()¶
- input(prompt, /)
Je-li přítomen argument prompt, vypíše se na standardní výstup bez koncového znaku nového řádku. Funkce poté načte řádek ze vstupu, převede jej na řetězec (s odstraněním koncového znaku nového řádku) a vrátí jej. Při načtení EOF se vyvolá
EOFError. Příklad:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Je-li načten modul
readline, použije jejinput()k poskytnutí propracovaných funkcí pro úpravu řádku a historii.Auditní událost
Před čtením vstupu vyvolá auditní událost
builtins.inputs argumentemprompt.Auditní událost
Po úspěšném načtení vstupu vyvolá auditní událost
builtins.input/results výsledkem.
- class int(number=0, /)¶
- class int(string, /, base=10)
Vrátí objekt celého čísla vytvořený z čísla nebo řetězce; nejsou-li zadány žádné argumenty, vrátí
0.Příklady:
>>> int(123.45) 123 >>> int('123') 123 >>> int(' -12_345\n') -12345 >>> int('FACE', 16) 64206 >>> int('0xface', 0) 64206 >>> int('01110011', base=2) 115
Definuje-li argument metodu
__int__(), vrátíint(x)hodnotux.__int__(). Definuje-li argument__index__(), vrátíx.__index__(). U čísel s plovoucí řádovou čárkou se hodnota ořízne směrem k nule.Není-li argument číslo nebo je-li zadán base, musí jít o řetězec či instanci
bytesnebobytearray, která představuje celé číslo v číselné soustavě se základem base. Řetězci může volitelně předcházet+nebo-(bez mezery mezi nimi), může mít počáteční nuly, být obklopen bílými znaky a obsahovat mezi číslicemi jednotlivá podtržítka.Řetězec celého čísla o základu n obsahuje číslice, z nichž každá představuje hodnotu od 0 do n-1. Hodnoty 0–9 lze zapsat libovolnou desetinnou číslicí Unicode. Hodnoty 10–35 lze zapsat písmeny
aažz(neboAažZ). Výchozí hodnota base je 10. Povolené základy jsou 0 a 2–36. Řetězce se základem 2, 8 a 16 mohou mít předponu0b/0B,0o/0Onebo0x/0Xstejně jako celočíselné literály v kódu. Při základu 0 se řetězec interpretuje obdobně jako celočíselný literál v kódu: skutečný základ 2, 8, 10 nebo 16 určuje předpona. Základ 0 také nepovoluje počáteční nuly:int('010', 0)není platné, zatímcoint('010')aint('010', 8)ano.Celočíselný typ popisuje oddíl Numeric Types — int, float, complex.
Změněno ve verzi 3.4: Není-li base instancí
inta má-li objekt base metodubase.__index__, zavolá se tato metoda pro získání celého čísla představujícího základ. Předchozí verze používalybase.__int__namístobase.__index__.Změněno ve verzi 3.6: Je povoleno seskupovat číslice podtržítky stejně jako v literálech kódu.
Změněno ve verzi 3.7: První parametr je nyní pouze poziční.
Změněno ve verzi 3.8: Na
__index__()se přejde, není-li definována__int__().Změněno ve verzi 3.11: Řetězcové vstupy a řetězcové reprezentace typu
intlze omezit, což pomáhá předcházet útokům typu odepření služby. Při překročení limitu se vyvoláValueError, ať už k němu dojde během převodu řetězce naint, nebo by limit překročil převodintna řetězec. Viz dokumentace omezení délky řetězcového převodu celých čísel.Změněno ve verzi 3.14:
int()již nedeleguje na metodu__trunc__().
- isinstance(object, classinfo, /)¶
Vrátí
True, je-li argument object instancí argumentu classinfo nebo jeho (přímé, nepřímé či virtuální) podtřídy. Není-li object objektem daného typu, funkce vždy vrátíFalse. Je-li classinfo n-ticí objektů typů (případně rekurzivně dalších takových n-tic) nebo sjednocením typů více typů, vrátíTrue, pokud je object instancí kteréhokoli z nich. Není-li classinfo typem ani n-ticí typů a takových n-tic, vyvolá se výjimkaTypeError. U neplatného typu seTypeErrornemusí vyvolat, uspěje-li dřívější test.Změněno ve verzi 3.10: classinfo může být sjednocením typů.
- issubclass(class, classinfo, /)¶
Vrátí
True, je-li class (přímou, nepřímou či virtuální) podtřídou classinfo. Třída se považuje za podtřídu sebe sama. classinfo může být n-tice objektů tříd (případně rekurzivně dalších takových n-tic) nebo sjednocení typů; v takovém případě vrátíTrue, je-li class podtřídou kterékoli položky v classinfo. Ve všech ostatních případech se vyvolá výjimkaTypeError.Změněno ve verzi 3.10: classinfo může být sjednocením typů.
- iter(iterable, /)¶
- iter(callable, sentinel, /)
Vrátí objekt iterátoru. První argument se interpretuje velmi odlišně podle přítomnosti druhého argumentu. Bez druhého argumentu musí jediný argument být kolekce podporující protokol iterovatelného objektu (metodu
__iter__()) nebo protokol sekvence (metodu__getitem__()s celočíselnými argumenty začínajícími hodnotou0). Nepodporuje-li ani jeden z těchto protokolů, vyvolá seTypeError. Je-li zadán druhý argument sentinel, musí být první argument volatelný objekt. Takto vytvořený iterátor při každém volání své metody__next__()zavolá callable bez argumentů; rovná-li se vrácená hodnota hodnotě sentinel, vyvolá seStopIteration, jinak se hodnota vrátí.Viz také Iterator Types.
Jedním z užitečných použití druhé podoby
iter()je vytvoření čtečky bloků. Například čtení bloků pevné šířky z binárního databázového souboru až do dosažení konce souboru:from functools import partial with open('mydata.db', 'rb') as f: for block in iter(partial(f.read, 64), b''): process_block(block)
- len(object, /)¶
Vrátí délku (počet položek) objektu. Argumentem může být sekvence (například řetězec, bytes, n-tice, seznam nebo range) či kolekce (například slovník, množina nebo neměnná množina).
Implementační detail CPythonu
lenvyvoláOverflowErroru délek větších nežsys.maxsize, napříkladrange(2 ** 100).
- class list(iterable=(), /)
listve skutečnosti není funkce, ale typ měnitelné sekvence, jak popisují oddíly Lists a Sequence Types — list, tuple, range.
- locals()¶
Vrátí mapovací objekt představující aktuální místní tabulku symbolů, v níž jsou klíči názvy proměnných a hodnotami jejich právě navázané reference.
V oboru platnosti modulu i při použití
exec()neboeval()s jediným jmenným prostorem vrací tato funkce stejný jmenný prostor jakoglobals().V oboru platnosti třídy vrací jmenný prostor, který bude předán konstruktoru metatřídy.
Při použití
exec()neboeval()s oddělenými místními a globálními argumenty vrací místní jmenný prostor předaný volání funkce.Ve všech výše uvedených případech vrátí každé volání
locals()v daném rámci vykonávání tentýž mapovací objekt. Změny provedené prostřednictvím mapovacího objektu vráceného zlocals()se projeví jako přiřazené, znovu přiřazené nebo odstraněné místní proměnné a přiřazení, opětovné přiřazení či odstranění místních proměnných okamžitě ovlivní obsah vráceného mapování.V optimalizovaném oboru platnosti (včetně funkcí, generátorů a korutin) naproti tomu každé volání
locals()vrací nový slovník s aktuálními vazbami místních proměnných funkce a všech nelokálních referencí buněk. Změny vazeb názvů provedené prostřednictvím vráceného slovníku se v tomto případě nezapisují zpět do odpovídajících místních proměnných ani nelokálních referencí buněk. Jejich přiřazení, opětovné přiřazení či odstranění zároveň neovlivní obsah dříve vrácených slovníků.Volání
locals()v rámci komprehenze ve funkci, generátoru nebo korutině odpovídá volání v obklopujícím oboru platnosti, zahrne však inicializované iterační proměnné komprehenze. V ostatních oborech se chová, jako kdyby komprehenze běžela jako vnořená funkce.Volání
locals()v rámci generátorového výrazu odpovídá volání ve vnořené generátorové funkci.Změněno ve verzi 3.12: Chování
locals()v komprehenzi bylo upraveno podle PEP 709.Změněno ve verzi 3.13: V rámci PEP 667 je nyní definována sémantika změn mapovacích objektů vrácených touto funkcí. Chování v optimalizovaných oborech platnosti nyní odpovídá výše uvedenému popisu. V ostatních oborech zůstává kromě svého zpřesnění oproti předchozím verzím nezměněné.
- map(function, iterable, /, *iterables, strict=False)¶
Vrátí iterátor, který použije function na každou položku objektu iterable a poskytuje výsledky. Jsou-li předány další argumenty iterables, musí function přijímat odpovídající počet argumentů a používá se souběžně na položky všech iterovatelných objektů. U více iterovatelných objektů se iterátor zastaví po vyčerpání nejkratšího z nich. Je-li strict rovno
Truea některý iterovatelný objekt se vyčerpá dříve než ostatní, vyvolá seValueError. Pro případy, kdy jsou vstupy funkce již uspořádány do n-tic argumentů, vizitertools.starmap().Změněno ve verzi 3.14: Přidán parametr strict.
- max(iterable, /, *, key=None)¶
- max(iterable, /, *, default, key=None)
- max(arg1, arg2, /, *args, key=None)
Vrátí největší položku iterovatelného objektu nebo největší ze dvou či více argumentů.
Je-li zadán jeden poziční argument, měl by být iterovatelným objektem. Vrátí se jeho největší položka. Jsou-li zadány dva nebo více pozičních argumentů, vrátí se největší z nich.
K dispozici jsou dva volitelné argumenty pouze klíčových slov. Argument key určuje jednoargumentovou řadicí funkci podobnou té, kterou používá
list.sort(). Argument default určuje objekt vrácený v případě, že je zadaný iterovatelný objekt prázdný. Je-li prázdný a default není zadán, vyvolá seValueError.Je-li maximálních položek více, funkce vrátí první nalezenou. To odpovídá ostatním nástrojům zachovávajícím stabilitu řazení, například
sorted(iterable, key=keyfunc, reverse=True)[0]aheapq.nlargest(1, iterable, key=keyfunc).Změněno ve verzi 3.4: Přidán parametr pouze klíčového slova default.
Změněno ve verzi 3.8: key může být
None.
- class memoryview(object)
Vrátí objekt „pohledu do paměti“ vytvořený ze zadaného argumentu. Další informace uvádí Memory Views.
- min(iterable, /, *, key=None)¶
- min(iterable, /, *, default, key=None)
- min(arg1, arg2, /, *args, key=None)
Vrátí nejmenší položku iterovatelného objektu nebo nejmenší ze dvou či více argumentů.
Je-li zadán jeden poziční argument, měl by být iterovatelným objektem. Vrátí se jeho nejmenší položka. Jsou-li zadány dva nebo více pozičních argumentů, vrátí se nejmenší z nich.
K dispozici jsou dva volitelné argumenty pouze klíčových slov. Argument key určuje jednoargumentovou řadicí funkci podobnou té, kterou používá
list.sort(). Argument default určuje objekt vrácený v případě, že je zadaný iterovatelný objekt prázdný. Je-li prázdný a default není zadán, vyvolá seValueError.Je-li minimálních položek více, funkce vrátí první nalezenou. To odpovídá ostatním nástrojům zachovávajícím stabilitu řazení, například
sorted(iterable, key=keyfunc)[0]aheapq.nsmallest(1, iterable, key=keyfunc).Změněno ve verzi 3.4: Přidán parametr pouze klíčového slova default.
Změněno ve verzi 3.8: key může být
None.
- next(iterator, /)¶
- next(iterator, default, /)
Získá další položku z iterátoru voláním jeho metody
__next__(). Je-li zadána hodnota default, vrátí se při vyčerpání iterátoru; jinak se vyvoláStopIteration.
- class object¶
Toto je konečná základní třída všech ostatních tříd. Obsahuje metody společné všem instancím tříd Pythonu. Konstruktor při zavolání vrátí nový objekt bez dalších vlastností. Nepřijímá žádné argumenty.
- oct(integer, /)¶
Převede celé číslo na osmičkový řetězec s předponou „0o“. Výsledkem je platný výraz Pythonu. Není-li integer objektem
intPythonu, musí definovat metodu__index__(), která vrací celé číslo. Například:>>> oct(8) '0o10' >>> oct(-56) '-0o70'
Chcete-li celé číslo převést na osmičkový řetězec s předponou „0o“ nebo bez ní, můžete použít některý z následujících způsobů.
>>> '%#o' % 10, '%o' % 10 ('0o12', '12') >>> format(10, '#o'), format(10, 'o') ('0o12', '12') >>> f'{10:#o}', f'{10:o}' ('0o12', '12')
Další informace uvádí
format().
- open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)¶
Otevře file a vrátí odpovídající souborový objekt. Nelze-li soubor otevřít, vyvolá se
OSError. Další příklady použití této funkce uvádí Čtení a zápis souborů.file je objekt podobný cestě udávající cestu (absolutní nebo relativní vůči aktuálnímu pracovnímu adresáři) k otevíranému souboru nebo celočíselný deskriptor souboru, který se má obalit. (Je-li zadán deskriptor souboru, při zavření vráceného I/O objektu se také zavře, pokud closefd není nastaveno na
False.)mode je volitelný řetězec určující režim otevření souboru. Výchozí hodnota
'r'znamená otevření pro čtení v textovém režimu. Další běžné hodnoty jsou'w'pro zápis (existující soubor se nejprve zkrátí),'x'pro výhradní vytvoření a'a'pro připojování (na některých unixových systémech to znamená, že se všechny zápisy připojují na konec souboru bez ohledu na aktuální pozici). Není-li v textovém režimu zadáno encoding, použité kódování závisí na platformě: aktuální kódování národního prostředí se získá volánímlocale.getencoding(). (Pro čtení a zápis nezpracovaných bajtů použijte binární režim a encoding nezadávejte.) Dostupné režimy jsou:Znak
Význam
'r'otevření pro čtení (výchozí)
'w'otevření pro zápis s předchozím zkrácením souboru
'x'otevření pro výhradní vytvoření; selže, pokud soubor již existuje
'a'otevření pro zápis s připojováním na konec existujícího souboru
'b'binární režim
't'textový režim (výchozí)
'+'otevření pro aktualizaci (čtení i zápis)
Výchozí režim je
'r'(otevření pro čtení textu, synonymum'rt'). Režimy'w+'a'w+b'soubor otevřou a zkrátí. Režimy'r+'a'r+b'jej otevřou bez zkrácení.Jak uvádí Overview, Python rozlišuje binární a textový vstup a výstup. Soubory otevřené v binárním režimu (argument mode obsahuje
'b') vracejí obsah jako objektybytesbez dekódování. V textovém režimu (výchozím, nebo když mode obsahuje't') se obsah souboru vrací jakostr; bajty se nejprve dekódují kódováním závislým na platformě nebo zadaným encoding.Poznámka
Python není závislý na pojetí textových souborů v podkladovém operačním systému. Veškeré zpracování provádí sám Python, a je proto nezávislé na platformě.
buffering je volitelné celé číslo nastavující zásady bufferování. Hodnota 0 bufferování vypne (povoleno pouze v binárním režimu), 1 zvolí řádkové bufferování (použitelné pouze při zápisu v textovém režimu) a celé číslo > 1 udává velikost bufferu pevných bloků v bajtech. Takto zadaná velikost bufferu platí pro bufferovaný binární vstup a výstup, avšak
TextIOWrapper(tedy soubory otevřené smode='r+') používá další bufferování. Pro jeho vypnutí vTextIOWrapperzvažte příznakwrite_throughmetodyio.TextIOWrapper.reconfigure(). Není-li argument buffering zadán, výchozí zásady fungují následovně:Binární soubory se bufferují v blocích pevné velikosti; je-li dostupná velikost bloku zařízení, činí velikost bufferu
max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE). Na většině systémů bude buffer obvykle velký 128 kilobajtů.„Interaktivní“ textové soubory (soubory, pro něž
isatty()vracíTrue) používají řádkové bufferování. Ostatní textové soubory používají výše popsané zásady pro binární soubory.
encoding je název kódování použitého k dekódování nebo zakódování souboru. Má se používat pouze v textovém režimu. Výchozí kódování závisí na platformě (vrací je
locale.getencoding()), lze však použít libovolné textové kódování podporované Pythonem. Seznam podporovaných kódování uvádí modulcodecs.errors je volitelný řetězec určující způsob zpracování chyb kódování a dekódování; nelze jej použít v binárním režimu. K dispozici je řada standardních obslužných rutin chyb (uvedených v Error Handlers), platný je však také každý název obsluhy registrovaný pomocí
codecs.register_error(). Mezi standardní názvy patří:'strict'vyvolá při chybě kódování výjimkuValueError. Výchozí hodnotaNonemá stejný účinek.'ignore'chyby ignoruje. Ignorování chyb kódování může vést ke ztrátě dat.'replace'vloží na místo chybných dat náhradní značku (například'?').'surrogateescape'představuje chybné bajty nízkými náhradními jednotkami kódu v rozsahu U+DC80 až U+DCFF. Při použití obsluhysurrogateescapeběhem zápisu se tyto jednotky převedou zpět na stejné bajty. To je užitečné při zpracování souborů v neznámém kódování.'xmlcharrefreplace'je podporováno pouze při zápisu do souboru. Znaky, které kódování nepodporuje, se nahradí odpovídající znakovou referencí XML&#nnn;.'backslashreplace'nahrazuje chybná data escape sekvencemi Pythonu se zpětným lomítkem.'namereplace'(také podporováno pouze při zápisu) nahrazuje nepodporované znaky escape sekvencemi\N{...}.
newline určuje způsob zpracování znaků nového řádku z proudu. Může mít hodnotu
None,'','\n','\r'nebo'\r\n'. Funguje následovně:Je-li při čtení z proudu newline rovno
None, zapne se režim univerzálních nových řádků. Vstupní řádky mohou končit'\n','\r'nebo'\r\n'a před vrácením volajícímu se převedou na'\n'. Je-li hodnota'', režim univerzálních nových řádků je zapnutý, ale zakončení řádků se vracejí bez převodu. U ostatních platných hodnot ukončuje vstupní řádek pouze zadaný řetězec a zakončení se vrací bez převodu.Je-li při zápisu do proudu newline rovno
None, všechny zapisované znaky'\n'se převedou na výchozí systémový oddělovač řádkůos.linesep. Je-li newline rovno''nebo'\n', žádný převod neprobíhá. U ostatních platných hodnot se zapisované znaky'\n'převedou na zadaný řetězec.
Je-li closefd rovno
Falsea byl zadán deskriptor souboru namísto názvu, zůstane podkladový deskriptor při zavření souboru otevřený. Je-li zadán název souboru, musí být closefd rovnoTrue(výchozí hodnota), jinak se vyvolá chyba.Vlastní otevírací funkci lze použít předáním volatelného objektu jako opener. Podkladový deskriptor souborového objektu se pak získá voláním opener s argumenty (file, flags). opener musí vrátit otevřený deskriptor souboru (předání
os.openjako opener poskytuje podobnou funkčnost jako předáníNone).Nově vytvořený soubor je neděditelný.
Následující příklad používá parametr dir_fd funkce
os.open()k otevření souboru relativně vůči danému adresáři:>>> import os >>> dir_fd = os.open('somedir', os.O_RDONLY) >>> def opener(path, flags): ... return os.open(path, flags, dir_fd=dir_fd) ... >>> with open('spamspam.txt', 'w', opener=opener) as f: ... print('This will be written to somedir/spamspam.txt', file=f) ... >>> os.close(dir_fd) # don't leak a file descriptor
Typ souborového objektu vráceného funkcí
open()závisí na režimu. Při otevření souboru v textovém režimu ('w','r','wt','rt'atd.) vracíopen()podtříduio.TextIOBase(konkrétněio.TextIOWrapper). Při otevření v bufferovaném binárním režimu je vrácená třída podtřídouio.BufferedIOBase. Konkrétní třída se liší: v binárním režimu čtení se vracíio.BufferedReader, v binárním režimu zápisu a připojováníio.BufferedWritera v režimu čtení i zápisuio.BufferedRandom. Je-li bufferování vypnuto, vrací se nezpracovaný proud, podtřídaio.RawIOBase, konkrétněio.FileIO.Viz také moduly pro práci se soubory, například
fileinput,io(kde je deklarovánaopen()),os,os.path,tempfileashutil.Auditní událost
Vyvolá auditní událost
opens argumentypath,mode,flags.Argumenty
modeaflagsmohou být oproti původnímu volání změněné nebo odvozené.Změněno ve verzi 3.3:
Přidán parametr opener.
Přidán režim
'x'.Pokud soubor otevíraný v režimu výhradního vytvoření (
'x') již existuje, vyvolá se nyníFileExistsError.
Změněno ve verzi 3.4:
Soubor je nyní neděditelný.
Změněno ve verzi 3.5:
Pokud je systémové volání přerušeno a obsluha signálu nevyvolá výjimku, funkce nyní systémové volání zopakuje namísto vyvolání výjimky
InterruptedError(zdůvodnění viz PEP 475).Přidána obsluha chyb
'namereplace'.
Změněno ve verzi 3.6:
Přidána podpora objektů implementujících
os.PathLike.V systému Windows může otevření bufferu konzole vrátit jinou podtřídu
io.RawIOBasenežio.FileIO.
Změněno ve verzi 3.11: Režim
'U'byl odstraněn.
- ord(character, /)¶
Vrátí pořadovou hodnotu znaku.
Je-li argument řetězec o jednom znaku, vrátí bod kódu Unicode tohoto znaku. Například
ord('a')vrátí celé číslo97aord('€')(znak eura) vrátí8364. Jde o inverzní funkci kchr().Je-li argument objekt
bytesnebobytearraydélky 1, vrátí hodnotu jeho jediného bajtu. Napříkladord(b'a')vrátí celé číslo97.
- pow(base, exp, mod=None)¶
Vrátí base umocněné na exp; je-li přítomno mod, vrátí base umocněné na exp modulo mod (vypočítané efektivněji než
pow(base, exp) % mod). Dvouargumentová podobapow(base, exp)odpovídá použití operátoru mocnění:base**exp.Jsou-li argumenty vestavěné číselné typy se smíšenými typy operandů, použijí se pravidla převodu pro binární aritmetické operátory. U operandů
intmá výsledek stejný typ jako operandy (po převodu), není-li druhý argument záporný; v takovém případě se všechny argumenty převedou na float a vrátí se výsledek typu float. Napříkladpow(10, 2)vrátí100, alepow(10, -2)vrátí0.01. U záporného základu typuintnebofloata neceločíselného exponentu se vrátí komplexní výsledek. Napříkladpow(-9, 0.5)vrátí hodnotu blízkou3j. Naproti tomu u záporného základu typuintnebofloats celočíselným exponentem se vrátí výsledek typu float. Napříkladpow(-9, 2.0)vrátí81.0.Jsou-li operandy base a exp typu
inta je přítomno mod, musí mít mod rovněž celočíselný typ a být nenulové. Je-li mod přítomno a exp je záporné, musí být base a mod nesoudělné. V takovém případě se vrátípow(inv_base, -exp, mod), kde inv_base je inverze base modulo mod.Příklad výpočtu inverze čísla
38modulo97:>>> pow(38, -1, mod=97) 23 >>> 23 * 38 % 97 == 1 True
Změněno ve verzi 3.8: U operandů
intnyní tříargumentová podobapowdovoluje záporný druhý argument, což umožňuje výpočet modulárních inverzí.Změněno ve verzi 3.8: Povoleny argumenty klíčových slov. Dříve byly podporovány pouze poziční argumenty.
- print(*objects, sep=' ', end='\n', file=None, flush=False)¶
Vypíše objects do textového proudu file, oddělené hodnotou sep a následované hodnotou end. Jsou-li sep, end, file a flush uvedeny, musí být zadány jako argumenty klíčových slov.
Všechny argumenty, které nejsou klíčovými slovy, se převedou na řetězce jako pomocí
str()a zapíší do proudu oddělené hodnotou sep a následované end. sep i end musí být řetězce; mohou být takéNone, což znamená použití výchozích hodnot. Nejsou-li zadány žádné objects,print()zapíše pouze end.Argument file musí být objekt s metodou
write(string); není-li uveden nebo je-li rovenNone, použije sesys.stdout. Protože se vypisované argumenty převádějí na textové řetězce, nelzeprint()použít se souborovými objekty v binárním režimu. Pro ně použijtefile.write(...).Bufferování výstupu obvykle určuje file. Je-li však flush pravdivé, vynutí se vyprázdnění proudu.
Změněno ve verzi 3.3: Přidán argument klíčového slova flush.
- class property(fget=None, fset=None, fdel=None, doc=None)¶
Vrátí atribut vlastnosti.
fget je funkce pro získání hodnoty atributu. fset je funkce pro nastavení hodnoty atributu. fdel je funkce pro odstranění hodnoty atributu. doc vytváří dokumentační řetězec atributu.
Typickým použitím je definice spravovaného atributu
x:class C: def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.")
Je-li c instancí C,
c.xzavolá getter,c.x = valuezavolá setter adel c.xdeleter.Je-li zadáno doc, stane se dokumentačním řetězcem atributu vlastnosti. Jinak vlastnost zkopíruje dokumentační řetězec fget (pokud existuje). Díky tomu lze snadno vytvářet vlastnosti pouze pro čtení použitím
property()jako dekorátoru:class Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Get the current voltage.""" return self._voltage
Dekorátor
@propertyzmění metoduvoltage()na „getter“ atributu stejného názvu určeného pouze pro čtení a nastaví dokumentační řetězec voltage na „Get the current voltage.“- @getter¶
- @setter¶
- @deleter¶
Objekt vlastnosti má metody
getter,setteradeleter, které lze použít jako dekorátory. Vytvoří kopii vlastnosti a nastaví odpovídající přístupovou funkci na dekorovanou funkci. Nejlépe to ukáže příklad:class C: def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
Tento kód je přesně ekvivalentní prvnímu příkladu. Doplňkovým funkcím je nutné dát stejný název jako původní vlastnosti (v tomto případě
x).Vrácený objekt vlastnosti má také atributy
fget,fsetafdelodpovídající argumentům konstruktoru.
Změněno ve verzi 3.5: Dokumentační řetězce objektů vlastností jsou nyní zapisovatelné.
- __name__¶
Atribut uchovávající název vlastnosti. Název vlastnosti lze změnit za běhu.
Added in version 3.13.
- class range(stop, /)
- class range(start, stop, step=1, /)
rangeve skutečnosti není funkce, ale typ neměnné sekvence, jak popisují oddíly Ranges a Sequence Types — list, tuple, range.
- repr(object, /)¶
Vrátí řetězec obsahující tisknutelnou reprezentaci objektu. U mnoha typů se funkce pokouší vrátit řetězec, který po předání funkci
eval()vytvoří objekt se stejnou hodnotou. Jinak je reprezentací řetězec uzavřený v ostrých závorkách, který obsahuje název typu objektu a další informace, často včetně názvu a adresy objektu. Třída může návratovou hodnotu této funkce pro své instance řídit definicí metody__repr__(). Není-li dostupnásys.displayhook(), vyvolá tato funkceRuntimeError.Tato třída má vlastní reprezentaci, kterou lze vyhodnotit:
class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f"Person('{self.name}', {self.age})"
- reversed(object, /)¶
Vrátí obrácený iterátor. Argument musí být objekt s metodou
__reversed__()nebo musí podporovat protokol sekvence (metodu__len__()a metodu__getitem__()s celočíselnými argumenty začínajícími hodnotou0).
- round(number, ndigits=None)¶
Vrátí number zaokrouhlené na přesnost ndigits číslic za desetinnou tečkou. Je-li ndigits vynecháno nebo rovno
None, vrátí celé číslo nejbližší vstupu.U vestavěných typů podporujících
round()se hodnoty zaokrouhlují na nejbližší násobek 10 na minus ndigits. Jsou-li dva násobky stejně blízké, zaokrouhlí se k sudé možnosti (napříkladround(0.5)iround(-0.5)jsou0around(1.5)je2). Pro ndigits je platné libovolné celé číslo (kladné, nulové i záporné). Je-li ndigits vynecháno nebo rovnoNone, návratovou hodnotou je celé číslo. Jinak má návratová hodnota stejný typ jako number.U obecného objektu Pythonu
numberdelegujeroundnanumber.__round__.Poznámka
Chování
round()pro čísla float může být překvapivé: napříkladround(2.675, 2)poskytne2.67namísto očekávaných2.68. Nejde o chybu, ale o důsledek skutečnosti, že většinu desetinných zlomků nelze jako float vyjádřit přesně. Další informace uvádí Aritmetika s plovoucí řádovou čárkou: problémy a omezení.
- class set(iterable=(), /)
Vrátí nový objekt
set, volitelně s prvky převzatými z iterable.setje vestavěná třída. Dokumentaci této třídy uvádějíseta Set Types — set, frozenset.Další kontejnery popisují vestavěné třídy
frozenset,list,tupleadicti modulcollections.
- setattr(object, name, value, /)¶
Jde o protějšek funkce
getattr(). Argumenty jsou objekt, řetězec a libovolná hodnota. Řetězec může pojmenovávat existující nebo nový atribut. Pokud to objekt dovoluje, funkce přiřadí atributu hodnotu. Napříkladsetattr(x, 'foobar', 123)je ekvivalentní výrazux.foobar = 123.name nemusí být identifikátor Pythonu podle Names (identifiers and keywords), pokud si objekt toto omezení sám nevynutí, například ve vlastní metodě
__getattribute__()nebo pomocí__slots__. Atribut, jehož název není identifikátor, nebude přístupný tečkovou notací, lze k němu však přistoupit například prostřednictvímgetattr().Poznámka
Protože k komolení soukromých názvů dochází při kompilaci, je nutné název soukromého atributu (atributu se dvěma počátečními podtržítky) pro nastavení pomocí
setattr()zkomolit ručně.
- class slice(stop, /)¶
- class slice(start, stop, step=None, /)
Vrátí objekt výřezu představující množinu indexů určenou výrazem
range(start, stop, step). Výchozí hodnotou argumentů start a step jeNone.Objekty výřezu vznikají také při použití syntaxe výřezů. Například:
a[start:stop:step]neboa[start:stop, i].Alternativní variantu poskytuje
itertools.islice(); vrací iterátor.- start¶
- stop¶
- step¶
Tyto atributy pouze pro čtení jsou nastaveny na hodnoty argumentů (nebo jejich výchozí hodnoty). Nemají žádnou další výslovnou funkci, používá je však NumPy a další balíčky třetích stran.
Změněno ve verzi 3.12: Objekty výřezu jsou nyní hashovatelné (pokud jsou hashovatelné
start,stopastep).
- sorted(iterable, /, *, key=None, reverse=False)¶
Vrátí nový seřazený seznam z položek objektu iterable.
Má dva volitelné argumenty, které musí být zadány jako argumenty klíčových slov.
key určuje funkci jednoho argumentu, která z každého prvku objektu iterable získá porovnávací klíč (například
key=str.lower). Výchozí hodnota jeNone(prvky se porovnávají přímo).reverse je booleovská hodnota. Je-li nastavena na
True, prvky seznamu se seřadí, jako kdyby každé porovnání proběhlo obráceně.Pro převod funkce cmp starého stylu na funkci key použijte
functools.cmp_to_key().Vestavěná funkce
sorted()je zaručeně stabilní. Řazení je stabilní, pokud nemění vzájemné pořadí prvků, které se porovnají jako shodné. To je užitečné při víceprůchodovém řazení (například nejprve podle oddělení a poté podle platové třídy).Algoritmus řazení používá mezi položkami pouze porovnání
<. Přestože pro řazení stačí definovat metodu__lt__(), PEP 8 doporučuje implementovat všech šest rozšířených porovnání. Pomůže to předejít chybám při použití stejných dat s jinými nástroji pro řazení, napříkladmax(), které spoléhají na jinou podkladovou metodu. Implementace všech šesti porovnání také omezuje nejasnosti při porovnávání smíšených typů, jež může zavolat odraženou metodu__gt__().Příklady a stručný návod k řazení uvádí Sorting Techniques.
- @staticmethod¶
Převede metodu na statickou metodu.
Statická metoda nedostává implicitní první argument. Pro její deklaraci použijte následující idiom:
class C: @staticmethod def f(arg1, arg2, argN): ...
Podoba
@staticmethodje dekorátor funkce; podrobnosti uvádí Function definitions.Statickou metodu lze volat na třídě (například
C.f()) i na instanci (napříkladC().f()). Také deskriptor statické metody je volatelný, takže jej lze použít v definici třídy (napříkladf()).Statické metody v Pythonu se podobají metodám v Javě nebo C++. Variantou užitečnou pro tvorbu alternativních konstruktorů tříd je
classmethod().Stejně jako všechny dekorátory lze také
staticmethodzavolat jako běžnou funkci a dále pracovat s jejím výsledkem. To je potřeba v případech, kdy potřebujete z těla třídy referenci na funkci a chcete zabránit automatickému převodu na metodu instance. Tehdy použijte tento idiom:def regular_function(): ... class C: method = staticmethod(regular_function)
Další informace o statických metodách uvádí The standard type hierarchy.
Změněno ve verzi 3.10: Statické metody nyní přebírají atributy metody (
__module__,__name__,__qualname__,__doc__a__annotations__), mají nový atribut__wrapped__a lze je volat jako běžné funkce.
- class str(*, encoding='utf-8', errors='strict')
- class str(object)
- class str(object, encoding, errors='strict')
- class str(object, *, errors)
Vrátí verzi objektu object typu
str. Podrobnosti uvádístr().strje vestavěná řetězcová třída. Obecné informace o řetězcích uvádí Text Sequence Type — str.
- sum(iterable, /, start=0)¶
Sečte zleva doprava hodnotu start a položky objektu iterable a vrátí součet. Položky iterable jsou obvykle čísla a počáteční hodnota nesmí být řetězec.
Pro některé případy použití existují vhodné alternativy k
sum(). Upřednostňovaným rychlým způsobem spojení sekvence řetězců je volání''.join(sequence). Pro sčítání hodnot s plovoucí řádovou čárkou s rozšířenou přesností vizmath.fsum(). Pro spojení řady iterovatelných objektů zvažteitertools.chain().Změněno ve verzi 3.8: Parametr start lze zadat jako argument klíčového slova.
Změněno ve verzi 3.12: Sčítání hodnot float přešlo na algoritmus, který na většině sestavení poskytuje vyšší přesnost a lepší komutativitu.
Změněno ve verzi 3.14: Přidána specializace pro sčítání komplexních čísel používající stejný algoritmus jako sčítání hodnot float.
- class super¶
- class super(type, object_or_type=None, /)
Vrátí proxy objekt, který deleguje volání metod na rodičovskou nebo sourozeneckou třídu typu type. To je užitečné pro přístup ke zděděným metodám, které byly ve třídě překryty.
object_or_type určuje prohledávané pořadí rozlišení metod. Hledání začíná třídou bezprostředně následující za type.
Je-li například
__mro__objektu object_or_typeD -> B -> C -> A -> objecta hodnota type jeB, prohledávásuper()pořadíC -> A -> object.Atribut
__mro__třídy odpovídající object_or_type obsahuje pořadí hledání metod používané funkcemigetattr()isuper(). Atribut je dynamický a může se změnit při každé aktualizaci hierarchie dědičnosti.Je-li druhý argument vynechán, vrácený objekt super je nevázaný. Je-li druhý argument objekt, musí být
isinstance(obj, type)pravdivé. Je-li druhý argument typ, musí být pravdivéissubclass(type2, type)(to je užitečné pro metody tříd).Při přímém volání uvnitř běžné metody třídy lze oba argumenty vynechat („bezargumentové
super()“). type pak bude obklopující třída a obj první argument bezprostředně obklopující funkce (obvykleself). To znamená, že bezargumentovésuper()nebude fungovat očekávaným způsobem uvnitř vnořených funkcí, včetně generátorových výrazů, které vnořené funkce vytvářejí implicitně.super má dvě typická použití. V hierarchii tříd s jednoduchou dědičností lze pomocí super odkazovat na rodičovské třídy bez jejich výslovného pojmenování, což usnadňuje údržbu kódu. Toto použití se blíží použití super v jiných programovacích jazycích.
Druhým použitím je podpora kooperativní vícenásobné dědičnosti v dynamickém běhovém prostředí. Toto použití je specifické pro Python a nevyskytuje se ve staticky kompilovaných jazycích ani v jazycích podporujících pouze jednoduchou dědičnost. Umožňuje implementovat „diamantové diagramy“, v nichž stejnou metodu implementuje více základních tříd. Správný návrh vyžaduje, aby takové implementace měly vždy stejnou signaturu volání (protože pořadí volání se určuje za běhu, přizpůsobuje se změnám hierarchie tříd a může zahrnovat sourozenecké třídy, které před spuštěním nejsou známé).
V obou případech vypadá typické volání nadtřídy takto:
class C(B): def method(self, arg): super().method(arg) # This does the same thing as: # super(C, self).method(arg)
super()funguje kromě vyhledávání metod také pro vyhledávání atributů. Jedním z možných použití je volání deskriptorů v rodičovské nebo sourozenecké třídě.super()je implementována jako součást procesu vazby pro výslovné vyhledávání atributů tečkovou notací, napříkladsuper().__getitem__(name). Implementuje vlastní metodu__getattribute__(), která prohledává třídy v předvídatelném pořadí podporujícím kooperativní vícenásobnou dědičnost. Proto nenísuper()definována pro implicitní vyhledávání pomocí příkazů nebo operátorů, napříkladsuper()[name].Kromě bezargumentové podoby také není
super()omezena na použití uvnitř metod. Dvouargumentová podoba určuje argumenty přesně a vytvoří odpovídající reference. Bezargumentová podoba funguje pouze uvnitř definice třídy, protože překladač doplní údaje potřebné ke správnému získání právě definované třídy a u běžných metod také k přístupu k aktuální instanci.Praktická doporučení k návrhu kooperativních tříd pomocí
super()uvádí průvodce použitím super().Změněno ve verzi 3.14: Objekty
superlze nyníserializovat modulem pickleakopírovat.
- class tuple(iterable=(), /)
tupleve skutečnosti není funkce, ale typ neměnné sekvence, jak popisují oddíly Tuples a Sequence Types — list, tuple, range.
- class type(object, /)¶
- class type(name, bases, dict, /, **kwargs)
S jedním argumentem vrátí typ objektu object. Návratovou hodnotou je objekt typu, obvykle stejný jako objekt vrácený atributem
object.__class__.Pro testování typu objektu se doporučuje vestavěná funkce
isinstance(), protože bere v úvahu podtřídy.Se třemi argumenty vrátí nový objekt typu. Jde v podstatě o dynamickou podobu příkazu
class. Řetězec name je názvem třídy a stane se atributem__name__. N-tice bases obsahuje základní třídy a stane se atributem__bases__; je-li prázdná, přidá seobject, konečný základ všech tříd. Slovník dict obsahuje definice atributů a metod pro tělo třídy; předtím, než se stane atributem__dict__, může být zkopírován nebo obalen. Následující dva příkazy vytvoří shodné objektytype:>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))
Viz také:
Argumenty klíčových slov předané tříargumentové podobě se předají odpovídajícímu mechanismu metatřídy (obvykle
__init_subclass__()) stejně jako klíčová slova v definici třídy (kromě metaclass).Viz také Customizing class creation.
Změněno ve verzi 3.6: Podtřídy
type, které nepřekrývajítype.__new__, již nemohou používat jednoargumentovou podobu k získání typu objektu.
- vars()¶
- vars(object, /)
Vrátí atribut
__dict__modulu, třídy, instance nebo jiného objektu s atributem__dict__.Objekty jako moduly a instance mají měnitelný atribut
__dict__; jiné objekty však mohou zápis do atributu__dict__omezovat (například třídy používajítypes.MappingProxyType, aby zabránily přímým změnám slovníku).Bez argumentu se
vars()chová jakolocals().Výjimka
TypeErrorse vyvolá, je-li zadán objekt, který nemá atribut__dict__(například pokud jeho třída definuje atribut__slots__).Změněno ve verzi 3.13: Výsledek volání této funkce bez argumentu byl upraven podle popisu vestavěné funkce
locals().
- zip(*iterables, strict=False)¶
Prochází souběžně několik iterovatelných objektů a vytváří n-tice s jednou položkou z každého z nich.
Příklad:
>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']): ... print(item) ... (1, 'sugar') (2, 'spice') (3, 'everything nice')
Formálněji:
zip()vrací iterátor n-tic, kde i-tá n-tice obsahuje i-tý prvek z každého iterovatelného argumentu.Jiný pohled na
zip()je, že mění řádky na sloupce a sloupce na řádky. Podobá se to transpozici matice.zip()je líná: prvky se nezpracují, dokud se přes iterovatelný objekt nezačne iterovat, například cyklemfornebo obalením dolist.Je třeba vzít v úvahu, že iterovatelné objekty předané funkci
zip()mohou mít různou délku, někdy záměrně a někdy kvůli chybě v kódu, který je připravil. Python nabízí tři způsoby řešení:Ve výchozím nastavení se
zip()zastaví po vyčerpání nejkratšího iterovatelného objektu. Zbývající položky delších objektů ignoruje a zkrátí výsledek na délku nejkratšího:>>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'])) [(0, 'fee'), (1, 'fi'), (2, 'fo')]
zip()se často používá tam, kde se předpokládá stejná délka iterovatelných objektů. V takovém případě se doporučuje volbastrict=True. Její výstup je stejný jako u běžnézip():>>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2), ('c', 3)]
Na rozdíl od výchozího chování vyvolá
ValueError, pokud se jeden iterovatelný objekt vyčerpá dříve než ostatní:>>> for item in zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True): ... print(item) ... (0, 'fee') (1, 'fi') (2, 'fo') Traceback (most recent call last): ... ValueError: zip() argument 2 is longer than argument 1
Bez argumentu
strict=Truese každá chyba vedoucí k různým délkám iterovatelných objektů potlačí a může se projevit jako obtížně odhalitelná chyba v jiné části programu.Kratší iterovatelné objekty lze doplnit konstantní hodnotou, aby měly všechny stejnou délku. Provádí to
itertools.zip_longest().
Mezní případy: S jediným iterovatelným argumentem vrací
zip()iterátor jednoprvkových n-tic. Bez argumentů vrací prázdný iterátor.Tipy a triky:
Je zaručeno vyhodnocování iterovatelných objektů zleva doprava. To umožňuje idiom pro seskupení datové řady do skupin délky n pomocí
zip(*[iter(s)]*n, strict=True). Tentýž iterátor se zopakujen-krát, takže každá výstupní n-tice obsahuje výsledkynvolání iterátoru. Vstup se tím rozdělí na bloky délky n.zip()lze spolu s operátorem*použít k rozbalení seznamu:>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> list(zip(x, y)) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
Změněno ve verzi 3.10: Přidán argument
strict.
- __import__(name, globals=None, locals=None, fromlist=(), level=0)¶
Poznámka
Jde o pokročilou funkci, která na rozdíl od
importlib.import_module()není při běžném programování v Pythonu potřeba.Tuto funkci volá příkaz
import. Lze ji nahradit (importováním modulubuiltinsa přiřazením dobuiltins.__import__), a změnit tak sémantiku příkazuimport. Tento postup se však důrazně nedoporučuje, protože stejných cílů lze obvykle snáze dosáhnout importními háčky (viz PEP 302), aniž by vznikly problémy s kódem předpokládajícím výchozí implementaci importu. Také přímé použití__import__()se nedoporučuje; přednost máimportlib.import_module().Funkce importuje modul name a případně pomocí zadaných globals a locals určí, jak název interpretovat v kontextu balíčku. fromlist udává názvy objektů nebo podmodulů, které se mají importovat z modulu určeného parametrem name. Standardní implementace argument locals vůbec nepoužívá a globals používá pouze k určení kontextu balíčku příkazu
import.level určuje použití absolutních nebo relativních importů.
0(výchozí hodnota) znamená provádět pouze absolutní importy. Kladné hodnoty level udávají počet rodičovských adresářů, které se mají prohledat relativně vůči adresáři modulu volajícího__import__()(podrobnosti viz PEP 328).Má-li proměnná name podobu
package.module, obvykle se vrátí balíček nejvyšší úrovně (název po první tečku), a nikoli modul pojmenovaný name. Je-li však zadán neprázdný argument fromlist, vrátí se modul pojmenovaný name.Například příkaz
import spamvytvoří bajtkód podobný následujícímu kódu:spam = __import__('spam', globals(), locals(), [], 0)
Příkaz
import spam.hamvede k tomuto volání:spam = __import__('spam.ham', globals(), locals(), [], 0)
Všimněte si, že
__import__()zde vrací modul nejvyšší úrovně, protože právě tento objekt příkazimportnaváže na název.Naproti tomu příkaz
from spam.ham import eggs, sausage as sausvede k:_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausage
Z
__import__()se zde vrátí modulspam.ham. Z tohoto objektu se získají importované názvy a přiřadí se příslušným názvům.Chcete-li jednoduše importovat modul (případně uvnitř balíčku) podle názvu, použijte
importlib.import_module().Změněno ve verzi 3.3: Záporné hodnoty level již nejsou podporovány (výchozí hodnota se tím také mění na 0).
Změněno ve verzi 3.9: Při použití voleb příkazového řádku
-Enebo-Ise nyní ignoruje proměnná prostředíPYTHONCASEOK.
Poznámky pod čarou