Eingebaute Funktionen¶
Der Python-Interpreter verfügt über eine Reihe von Funktionen und Typen, die immer verfügbar sind. Sie sind hier in alphabetischer Reihenfolge aufgeführt.
Eingebaute Funktionen |
|||
|---|---|---|---|
- abs(number, /)¶
Gibt den Absolutwert einer Zahl zurück. Das Argument kann eine Ganzzahl, eine Gleitkommazahl oder ein Objekt sein, das
__abs__()implementiert. Wenn das Argument eine komplexe Zahl ist, wird deren Betrag zurückgegeben.
- aiter(async_iterable, /)¶
Gibt einen asynchronen Iterator für ein asynchrones Iterable zurück. Entspricht dem Aufruf von
x.__aiter__().Hinweis: Im Gegensatz zu
iter()hataiter()keine Variante mit 2 Argumenten.Hinzugefügt in Version 3.10.
- all(iterable, /)¶
Gibt
Truezurück, wenn alle Elemente des iterables wahr sind (oder wenn das Iterable leer ist). Entsprichtdef all(iterable): for element in iterable: if not element: return False return True
- awaitable anext(async_iterator, /)¶
- awaitable anext(async_iterator, default, /)
Gibt beim Awaiten das nächste Element aus dem gegebenen asynchronen Iterator zurück, oder default, wenn dies angegeben ist und der Iterator erschöpft ist.
Dies ist die asynchrone Variante der eingebauten Funktion
next()und verhält sich ähnlich.Dies ruft die Methode
__anext__()des async_iterator auf und gibt ein Awaitable zurück. Das Awaiten gibt den nächsten Wert des Iterators zurück. Wenn default angegeben ist, wird es zurückgegeben, wenn der Iterator erschöpft ist, andernfalls wirdStopAsyncIterationausgelöst.Hinzugefügt in Version 3.10.
- any(iterable, /)¶
Gibt
Truezurück, wenn irgendein Element des iterables wahr ist. Wenn das Iterable leer ist, wirdFalsezurückgegeben. Entsprichtdef any(iterable): for element in iterable: if element: return True return False
- ascii(object, /)¶
Wie
repr()gibt dies einen String zurück, der eine druckbare Darstellung eines Objekts enthält, aber die Nicht-ASCII-Zeichen im vonrepr()zurückgegebenen String unter Verwendung von\x-,\u- oder\U-Escapes maskiert. Dies erzeugt einen String, der dem vonrepr()in Python 2 zurückgegebenen ähnlich ist.
- bin(integer, /)¶
Konvertiert eine Ganzzahl in eine binäre Zeichenkette mit dem Präfix "0b". Das Ergebnis ist ein gültiger Python-Ausdruck. Wenn integer kein Python
int-Objekt ist, muss es eine__index__()-Methode definieren, die eine Ganzzahl zurückgibt. Einige Beispiele>>> bin(3) '0b11' >>> bin(-10) '-0b1010'
Ob das Präfix "0b" gewünscht ist oder nicht, können Sie auf eine der folgenden Arten erreichen.
>>> format(14, '#b'), format(14, 'b') ('0b1110', '1110') >>> f'{14:#b}', f'{14:b}' ('0b1110', '1110')
Siehe auch
format()für weitere Informationen.
- class bool(object=False, /)¶
Gibt einen booleschen Wert zurück, d.h. entweder
TrueoderFalse. Das Argument wird mithilfe des Standard-Verfahrens zur Wahrheitsprüfung konvertiert. Wenn das Argument falsch ist oder weggelassen wird, wirdFalsezurückgegeben; andernfalls wirdTruezurückgegeben. Die Klasseboolist eine Unterklasse vonint(siehe Numerische Typen — int, float, complex). Sie kann nicht weiter unterklassifiziert werden. Ihre einzigen Instanzen sindFalseundTrue(siehe Boolescher Typ - bool).Geändert in Version 3.7: Das Argument ist jetzt positionsgebunden.
- breakpoint(*args, **kws)¶
Diese Funktion springt zum Aufruf in den Debugger. Insbesondere ruft sie
sys.breakpointhook()auf und leitetargsundkwsdirekt weiter. Standardmäßig ruftsys.breakpointhook()pdb.set_trace()auf und erwartet keine Argumente. In diesem Fall ist es rein eine Komfortfunktion, damit Siepdbnicht explizit importieren oder mehr Code eingeben müssen, um in den Debugger zu gelangen. Jedoch kannsys.breakpointhook()auf eine andere Funktion gesetzt werden, undbreakpoint()ruft diese dann automatisch auf, sodass Sie in den Debugger Ihrer Wahl springen können. Wennsys.breakpointhook()nicht zugänglich ist, löst diese FunktionRuntimeErroraus.Standardmäßig kann das Verhalten von
breakpoint()mit der UmgebungsvariablePYTHONBREAKPOINTgeändert werden. Einzelheiten zur Verwendung finden Sie insys.breakpointhook().Beachten Sie, dass dies nicht garantiert ist, wenn
sys.breakpointhook()ersetzt wurde.Löst ein Audit-Ereignis
builtins.breakpointmit dem Argumentbreakpointhookaus.Hinzugefügt in Version 3.7.
- class bytearray(source=b'')
- class bytearray(source, encoding, errors='strict')
Gibt ein neues Byte-Array zurück. Die Klasse
bytearrayist eine veränderbare Sequenz von Ganzzahlen im Bereich 0 <= x < 256. Sie hat die meisten üblichen Methoden veränderbarer Sequenzen, beschrieben in Veränderbare Sequenztypen, sowie die meisten Methoden, die der Typbyteshat, siehe Bytes- und Bytearray-Operationen.Der optionale Parameter source kann verwendet werden, um das Array auf verschiedene Arten zu initialisieren
Wenn es sich um einen String handelt, müssen Sie auch die Parameter encoding (und optional errors) angeben;
bytearray()konvertiert dann den String mitstr.encode()in Bytes.Wenn es sich um eine Ganzzahl handelt, hat das Array diese Größe und wird mit Null-Bytes initialisiert.
Wenn es sich um ein Objekt handelt, das die Puffer-Schnittstelle erfüllt, wird ein schreibgeschützter Puffer des Objekts zur Initialisierung des Byte-Arrays verwendet.
Wenn es sich um ein Iterable handelt, muss es ein Iterable von Ganzzahlen im Bereich
0 <= x < 256sein, die als anfänglicher Inhalt des Arrays verwendet werden.
Ohne Argument wird ein Array der Größe 0 erstellt.
Siehe auch Binäre Sequenztypen — bytes, bytearray, memoryview und Bytearray-Objekte.
- class bytes(source=b'')
- class bytes(source, encoding, errors='strict')
Gibt ein neues "bytes"-Objekt zurück, das eine unveränderliche Sequenz von Ganzzahlen im Bereich
0 <= x < 256darstellt.bytesist eine unveränderliche Version vonbytearray– sie hat dieselben nicht verändernden Methoden und dasselbe Indizierungs- und Slice-Verhalten.Entsprechend werden Konstruktorargumente wie für
bytearray()interpretiert.Bytes-Objekte können auch mit Literalen erstellt werden, siehe String- und Byte-Literale.
Siehe auch Binäre Sequenztypen — bytes, bytearray, memoryview, Bytes-Objekte und Bytes- und Bytearray-Operationen.
- callable(object, /)¶
Gibt
Truezurück, wenn das Argument object aufrufbar erscheint,Falseandernfalls. Wenn diesTruezurückgibt, ist es immer noch möglich, dass ein Aufruf fehlschlägt, aber wenn esFalsezurückgibt, wird der Aufruf von object niemals erfolgreich sein. Beachten Sie, dass Klassen aufrufbar sind (der Aufruf einer Klasse gibt eine neue Instanz zurück); Instanzen sind aufrufbar, wenn ihre Klasse eine__call__()-Methode hat.Hinzugefügt in Version 3.2: Diese Funktion wurde zuerst in Python 3.0 entfernt und dann in Python 3.2 wieder eingeführt.
- chr(codepoint, /)¶
Gibt die Zeichenkette zurück, die ein Zeichen mit dem angegebenen Unicode-Codepunkt darstellt. Zum Beispiel gibt
chr(97)die Zeichenkette'a'zurück, währendchr(8364)die Zeichenkette'€'zurückgibt. Dies ist die Umkehrung vonord().Der gültige Bereich für das Argument ist von 0 bis 1.114.111 (0x10FFFF in Basis 16).
ValueErrorwird ausgelöst, wenn es außerhalb dieses Bereichs liegt.
- @classmethod¶
Transformiert eine Methode in eine Klassenmethode.
Eine Klassenmethode empfängt die Klasse als impliziten ersten Argument, genau wie eine Instanzmethode die Instanz empfängt. Um eine Klassenmethode zu deklarieren, verwenden Sie diese Idiomatik
class C: @classmethod def f(cls, arg1, arg2): ...
Die Form
@classmethodist ein Funktions-Decorator – siehe Funktionsdefinitionen für Details.Eine Klassenmethode kann sowohl für die Klasse (z.B.
C.f()) als auch für eine Instanz (z.B.C().f()) aufgerufen werden. Die Instanz wird ignoriert, außer für ihre Klasse. Wenn eine Klassenmethode für eine abgeleitete Klasse aufgerufen wird, wird das abgeleitete Klassenobjekt als implizites erstes Argument übergeben.Klassenmethoden unterscheiden sich von C++- oder Java-Static-Methoden. Wenn Sie letztere wünschen, siehe
staticmethod()in diesem Abschnitt. Weitere Informationen zu Klassenmethoden finden Sie in Die Standard-Hierarchie der Typen.Geändert in Version 3.9: Klassenmethoden können nun andere Deskriptoren wie
property()umschließen.Geändert in Version 3.10: Klassenmethoden erben nun die Methodenattribute (
__module__,__name__,__qualname__,__doc__und__annotations__) und haben ein neues Attribut__wrapped__.Veraltet seit Version 3.11, entfernt in Version 3.13: Klassenmethoden können andere Deskriptoren wie
property()nicht mehr umschließen.
- compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)¶
Kompiliert die source zu einem Code- oder AST-Objekt. Code-Objekte können mit
exec()odereval()ausgeführt werden. source kann entweder ein normaler String, ein Byte-String oder ein AST-Objekt sein. Informationen zur Arbeit mit AST-Objekten finden Sie in der Dokumentation desast-Moduls.Das Argument filename sollte die Datei angeben, aus der der Code gelesen wurde; übergeben Sie einen erkennbaren Wert, wenn er nicht aus einer Datei gelesen wurde (z.B. wird oft
'<string>'verwendet).Das Argument mode gibt an, welche Art von Code kompiliert werden soll; es kann
'exec'sein, wenn source eine Sequenz von Anweisungen enthält,'eval', wenn es einen einzelnen Ausdruck enthält, oder'single', wenn es eine einzelne interaktive Anweisung enthält (in letzterem Fall werden Ausdrucksanweisungen, die zu etwas anderem alsNoneausgewertet werden, ausgegeben).Die optionalen Argumente flags und dont_inherit steuern, welche Compileroptionen aktiviert werden sollen und welche Zukunftspläne erlaubt sein sollen. Wenn keines von beiden vorhanden ist (oder beide null sind), wird der Code mit denselben Flags kompiliert, die den Code beeinflussen, der
compile()aufruft. Wenn das Argument flags gegeben ist und dont_inherit nicht (oder null ist), dann werden die durch das Argument flags angegebenen Compileroptionen und Zukunftspläne zusätzlich zu denen verwendet, die ohnehin verwendet würden. Wenn dont_inherit eine nicht-null Ganzzahl ist, dann ist das Argument flags dasjenige – die Flags (Zukunftspläne und Compileroptionen) im umgebenden Code werden ignoriert.Compileroptionen und Zukunftspläne werden durch Bits angegeben, die durch bitweises OR miteinander verknüpft werden können, um mehrere Optionen anzugeben. Das Bitfeld, das zur Angabe eines bestimmten Zukunftsplans erforderlich ist, findet sich als Attribut
compiler_flagin der Instanz_Featureim Modul__future__. Compiler-Flags finden sich im Modulast, mit dem PräfixPyCF_.Das Argument optimize gibt die Optimierungsstufe des Compilers an; der Standardwert von
-1wählt die Optimierungsstufe des Interpreters, wie sie durch die-O-Optionen gegeben ist. Explizite Stufen sind0(keine Optimierung;__debug__ist wahr),1(asserts werden entfernt,__debug__ist falsch) oder2(docstrings werden ebenfalls entfernt).Diese Funktion löst
SyntaxErroraus, wenn der kompilierte Quellcode ungültig ist, undValueError, wenn der Quellcode Null-Bytes enthält.Wenn Sie Python-Code in seine AST-Repräsentation parsen möchten, siehe
ast.parse().Löst ein Audit-Ereignis
compilemit den Argumentensourceundfilenameaus. Dieses Ereignis kann auch durch implizite Kompilierung ausgelöst werden.Hinweis
Beim Kompilieren eines Strings mit mehrzeiligem Code im Modus
'single'oder'eval'muss die Eingabe durch mindestens ein Zeilenumbruchzeichen beendet werden. Dies erleichtert die Erkennung unvollständiger und vollständiger Anweisungen im Modulcode.Warnung
Es ist möglich, den Python-Interpreter mit einem ausreichend großen/komplexen String zum Absturz zu bringen, wenn zu einem AST-Objekt kompiliert wird, aufgrund von Stapeltiefenbeschränkungen im AST-Compiler von Python.
Geändert in Version 3.2: Unterstützung für Windows- und Mac-Zeilenumbrüche. Außerdem muss die Eingabe im Modus
'exec'nicht mehr mit einem Zeilenumbruch enden. Der Parameter optimize wurde hinzugefügt.Geändert in Version 3.5: Zuvor wurde
TypeErrorausgelöst, wenn Null-Bytes in source angetroffen wurden.Hinzugefügt in Version 3.8:
ast.PyCF_ALLOW_TOP_LEVEL_AWAITkann nun als Flag übergeben werden, um die Unterstützung für Top-Levelawait,async forundasync withzu aktivieren.
- class complex(number=0, /)¶
- class complex(string, /)
- class complex(real=0, imag=0)
Konvertiert eine einzelne Zeichenkette oder Zahl in eine komplexe Zahl oder erstellt eine komplexe Zahl aus Real- und Imaginärteil.
Beispiele
>>> 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)
Wenn das Argument eine Zeichenkette ist, muss sie entweder einen Realteil (im gleichen Format wie für
float()) oder einen Imaginärteil (im gleichen Format, aber mit dem Suffix'j'oder'J') oder beides enthalten. Das optionale Vorzeichen des Imaginärteils ist in diesem Fall zwingend erforderlich. Die Zeichenkette kann optional von Leerzeichen und den runden Klammern'('und')'umgeben sein, die ignoriert werden. Die Zeichenkette darf keine Leerzeichen zwischen'+','-', dem Suffix'j'oder'J'und der Dezimalzahl enthalten. Zum Beispiel istcomplex('1+2j')gültig, abercomplex('1 + 2j')löst einenValueErroraus. Genauer gesagt, die Eingabe muss der Produktionsregelcomplexvaluein der folgenden Grammatik entsprechen, nachdem Klammern und führende sowie abschließende Leerzeichen entfernt wurden.complexvalue:
floatvalue|floatvalue("j" | "J") |floatvaluesignabsfloatvalue("j" | "J")Wenn das Argument eine Zahl ist, fungiert der Konstruktor als numerische Konvertierung wie
intundfloat. Für ein allgemeines Python-Objektxdelegiertcomplex(x)anx.__complex__(). Wenn__complex__()nicht definiert ist, greift es auf__float__()zurück. Wenn__float__()nicht definiert ist, greift es auf__index__()zurück.Wenn zwei Argumente übergeben werden oder Schlüsselwortargumente verwendet werden, kann jedes Argument ein numerischer Typ sein (einschließlich komplexer Zahlen). Wenn beide Argumente reelle Zahlen sind, wird eine komplexe Zahl mit der reellen Komponente real und der imaginären Komponente imag zurückgegeben. Wenn beide Argumente komplexe Zahlen sind, wird eine komplexe Zahl mit der reellen Komponente
real.real-imag.imagund der imaginären Komponentereal.imag+imag.realzurückgegeben. Wenn eines der Argumente eine reelle Zahl ist, wird nur deren reelle Komponente in den obigen Ausdrücken verwendet.Siehe auch
complex.from_number(), das nur ein einzelnes numerisches Argument akzeptiert.Wenn alle Argumente weggelassen werden, wird
0jzurückgegeben.Der Typ `complex` wird in Numerische Typen — int, float, complex beschrieben.
Geändert in Version 3.6: Die Gruppierung von Ziffern mit Unterstrichen wie in Code-Literalen ist erlaubt.
Geändert in Version 3.8: Greift auf
__index__()zurück, wenn__complex__()und__float__()nicht definiert sind.Veraltet seit Version 3.14: Die Übergabe einer komplexen Zahl als Argument für real oder imag ist jetzt veraltet; sie sollte nur als einzelnes Positionsargument übergeben werden.
- delattr(object, name, /)¶
Dies ist eine verwandte Funktion zu
setattr(). Die Argumente sind ein Objekt und eine Zeichenkette. Die Zeichenkette muss der Name eines der Attribute des Objekts sein. Die Funktion löscht das benannte Attribut, vorausgesetzt, das Objekt erlaubt dies. Zum Beispiel istdelattr(x, 'foobar')äquivalent zudel x.foobar. name muss kein Python-Bezeichner sein (siehesetattr()).
- class dict(**kwargs)
- class dict(mapping, /, **kwargs)
- class dict(iterable, /, **kwargs)
Erstellt ein neues Dictionary. Das Objekt
dictist die Dictionary-Klasse. Siehedictund Mapping-Typen — dict für Dokumentationen zu dieser Klasse.Andere Container sind die eingebauten Klassen
list,setundtuplesowie das Modulcollections.
- dir()¶
- dir(object, /)
Ohne Argumente gibt die Liste der Namen im aktuellen lokalen Gültigkeitsbereich zurück. Mit einem Argument wird versucht, eine Liste gültiger Attribute für dieses Objekt zurückzugeben.
Wenn das Objekt eine Methode namens
__dir__()hat, wird diese Methode aufgerufen und muss die Liste der Attribute zurückgeben. Dies ermöglicht Objekten, die eine benutzerdefinierte Funktion__getattr__()oder__getattribute__()implementieren, die Art und Weise anzupassen, wiedir()ihre Attribute meldet.Wenn das Objekt
__dir__()nicht bereitstellt, versucht die Funktion, so gut wie möglich Informationen aus dem Attribut__dict__des Objekts und aus seinem Typobjekt zu sammeln. Die resultierende Liste ist nicht unbedingt vollständig und kann ungenau sein, wenn das Objekt eine benutzerdefinierte Funktion__getattr__()hat.Der Standardmechanismus von
dir()verhält sich bei verschiedenen Objekttypen unterschiedlich, da er versucht, die relevantesten und nicht die vollständigen Informationen zu liefern.Wenn das Objekt ein Modulobjekt ist, enthält die Liste die Namen der Attribute des Moduls.
Wenn das Objekt ein Typ- oder Klassenobjekt ist, enthält die Liste die Namen seiner Attribute und rekursiv die Attribute seiner Basisklassen.
Andernfalls enthält die Liste die Namen der Attribute des Objekts, die Namen der Attribute seiner Klasse und rekursiv die Attribute seiner Basisklassen.
Die resultierende Liste ist alphabetisch sortiert. Zum Beispiel
>>> 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']
Hinweis
Da
dir()in erster Linie zur Bequemlichkeit bei der Verwendung an einer interaktiven Eingabeaufforderung bereitgestellt wird, versucht es, eine interessante Menge von Namen zu liefern, mehr als es versucht, eine rigoros oder konsistent definierte Menge von Namen zu liefern, und sein detailliertes Verhalten kann sich zwischen den Versionen ändern. Zum Beispiel sind Metaklassen-Attribute nicht in der Ergebnisliste enthalten, wenn das Argument eine Klasse ist.
- divmod(a, b, /)¶
Nimmt zwei (nicht-komplexe) Zahlen als Argumente und gibt ein Zahlenpaar zurück, das seinen Quotienten und Rest bei Ganzzahldivision darstellt. Bei gemischten Operandentypen gelten die Regeln für binäre arithmetische Operatoren. Für ganze Zahlen ist das Ergebnis dasselbe wie
(a // b, a % b). Für Gleitkommazahlen ist das Ergebnis(q, a % b), wobei q normalerweisemath.floor(a / b)ist, aber um 1 kleiner sein kann. In jedem Fall istq * b + a % bsehr nahe an a. Wenna % bnicht null ist, hat es das gleiche Vorzeichen wie b, und0 <= abs(a % b) < abs(b).
- enumerate(iterable, start=0)¶
Gibt ein Enumerationsobjekt zurück. iterable muss eine Sequenz, ein Iterator oder ein anderes Objekt sein, das Iteration unterstützt. Die Methode
__next__()des vonenumerate()zurückgegebenen Iterators gibt ein Tupel zurück, das eine Zählung (von start, der standardmäßig 0 ist) und die Werte enthält, die durch Iteration über iterable erhalten wurden.>>> 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')]
Entspricht
def enumerate(iterable, start=0): n = start for elem in iterable: yield n, elem n += 1
- eval(source, /, globals=None, locals=None)¶
- Parameter:
source (
str| Code-Objekt) – Ein Python-Ausdruck.globals (
dict|None) – Der globale Namensraum (Standard:None).locals (Mapping |
None) – Der lokale Namensraum (Standard:None).
- Gibt zurück:
Das Ergebnis des ausgewerteten Ausdrucks.
- Löst aus:
Syntaxfehler werden als Ausnahmen gemeldet.
Warnung
Diese Funktion führt beliebigen Code aus. Die Ausführung mit benutzereingelieferten Eingaben kann zu Sicherheitslücken führen.
Das Argument expression wird als Python-Ausdruck (technisch gesehen eine Bedingungsliste) unter Verwendung der Abbildungen globals und locals als globalen und lokalen Namensraum geparst und ausgewertet. Wenn das globals-Dictionary vorhanden ist und keinen Wert für den Schlüssel
__builtins__enthält, wird eine Referenz auf das Dictionary des integrierten Modulsbuiltinsunter diesem Schlüssel eingefügt, bevor expression geparst wird. Auf diese Weise können Sie steuern, welche Builtins dem auszuführenden Code zur Verfügung stehen, indem Sie Ihr eigenes__builtins__-Dictionary in globals einfügen, bevor Sie es aneval()übergeben. Wenn die Abbildung locals weggelassen wird, greift sie standardmäßig auf das globals-Dictionary zurück. Wenn beide Abbildungen weggelassen werden, wird der Ausdruck in der Umgebung ausgeführt, in dereval()aufgerufen wird. Beachten Sie, dasseval()nur dann Zugriff auf die verschachtelten Gültigkeitsbereiche (Nicht-Lokale) in der umgebenden Umgebung hat, wenn diese bereits im Gültigkeitsbereich referenziert sind, dereval()aufruft (z. B. über einenonlocal-Anweisung).Beispiel
>>> x = 1 >>> eval('x+1') 2
Diese Funktion kann auch verwendet werden, um beliebige Codeobjekte auszuführen (wie die, die von
compile()erstellt wurden). Übergeben Sie in diesem Fall ein Codeobjekt anstelle einer Zeichenkette. Wenn das Codeobjekt mit'exec'als mode-Argument kompiliert wurde, ist der Rückgabewert voneval()None.Hinweise: Die dynamische Ausführung von Anweisungen wird durch die Funktion
exec()unterstützt. Die Funktionenglobals()undlocals()geben das aktuelle globale und lokale Dictionary zurück, was nützlich sein kann, um sie für die Verwendung durcheval()oderexec()weiterzugeben.Wenn die gegebene Quelle eine Zeichenkette ist, werden führende und abschließende Leerzeichen und Tabs entfernt.
Siehe
ast.literal_eval()für eine Funktion, die Zeichenketten mit Ausdrücken, die nur Literale enthalten, sicher auswerten kann.Löst ein Audit-Ereignis
execmit dem Code-Objekt als Argument aus. Möglicherweise werden auch Code-Kompilierungsereignisse ausgelöst.Geändert in Version 3.13: Die Argumente globals und locals können jetzt als Schlüsselwörter übergeben werden.
Geändert in Version 3.13: Die Semantik des Standard-locals-Namensraums wurde wie für die eingebaute Funktion
locals()beschrieben angepasst.
- exec(source, /, globals=None, locals=None, *, closure=None)¶
Warnung
Diese Funktion führt beliebigen Code aus. Die Ausführung mit benutzereingelieferten Eingaben kann zu Sicherheitslücken führen.
Diese Funktion unterstützt die dynamische Ausführung von Python-Code. source muss entweder eine Zeichenkette oder ein Code-Objekt sein. Wenn es sich um eine Zeichenkette handelt, wird die Zeichenkette als eine Suite von Python-Anweisungen geparst, die dann ausgeführt wird (es sei denn, es tritt ein Syntaxfehler auf). [1] Wenn es sich um ein Code-Objekt handelt, wird es einfach ausgeführt. In allen Fällen wird erwartet, dass der ausgeführte Code als Datei-Eingabe gültig ist (siehe Abschnitt File input im Referenzhandbuch). Beachten Sie, dass die Anweisungen
nonlocal,yieldundreturnaußerhalb von Funktionsdefinitionen, selbst im Kontext von Code, der an die Funktionexec()übergeben wird, nicht verwendet werden dürfen. Der Rückgabewert istNone.In allen Fällen, wenn die optionalen Teile weggelassen werden, wird der Code im aktuellen Gültigkeitsbereich ausgeführt. Wenn nur globals angegeben ist, muss es sich um ein Dictionary handeln (und nicht um eine Unterklasse von Dictionary), das sowohl für die globalen als auch für die lokalen Variablen verwendet wird. Wenn globals und locals angegeben sind, werden sie für die globalen und lokalen Variablen verwendet, jeweils separat. Wenn angegeben, kann locals ein beliebiges Mapping-Objekt sein. Denken Sie daran, dass auf Modulebene Globals und Locals dasselbe Dictionary sind.
Hinweis
Wenn
execzwei getrennte Objekte als globals und locals erhält, wird der Code so ausgeführt, als ob er in einer Klassendefinition eingebettet wäre. Das bedeutet, dass Funktionen und Klassen, die im ausgeführten Code definiert sind, nicht auf Variablen zugreifen können, die auf der obersten Ebene zugewiesen wurden (da die Variablen auf der "obersten Ebene" in einer Klassendefinition als Klassenvariablen behandelt werden).Wenn das globals-Dictionary keinen Wert für den Schlüssel
__builtins__enthält, wird eine Referenz auf das Dictionary des integrierten Modulsbuiltinsunter diesem Schlüssel eingefügt. Auf diese Weise können Sie steuern, welche Builtins dem ausgeführten Code zur Verfügung stehen, indem Sie Ihr eigenes__builtins__-Dictionary in globals einfügen, bevor Sie es anexec()übergeben.Das Argument closure gibt eine Closure an – ein Tupel von Cell-Variablen. Es ist nur gültig, wenn das Objekt ein Code-Objekt mit freien (Closure-)Variablen ist. Die Länge des Tupels muss genau der Länge des Attributs
co_freevarsdes Code-Objekts entsprechen.Löst ein Audit-Ereignis
execmit dem Code-Objekt als Argument aus. Möglicherweise werden auch Code-Kompilierungsereignisse ausgelöst.Hinweis
Die eingebauten Funktionen
globals()undlocals()geben den aktuellen globalen und lokalen Namensraum zurück, was nützlich sein kann, um sie als zweites und drittes Argument fürexec()weiterzugeben.Hinweis
Die Standard-locals verhalten sich wie für die Funktion
locals()unten beschrieben. Übergeben Sie ein explizites locals-Dictionary, wenn Sie die Auswirkungen des Codes auf locals nach Rückkehr der Funktionexec()sehen möchten.Geändert in Version 3.11: Das Argument closure wurde hinzugefügt.
Geändert in Version 3.13: Die Argumente globals und locals können jetzt als Schlüsselwörter übergeben werden.
Geändert in Version 3.13: Die Semantik des Standard-locals-Namensraums wurde wie für die eingebaute Funktion
locals()beschrieben angepasst.
- filter(function, iterable, /)¶
Konstruiert einen Iterator aus den Elementen von iterable, für die function wahr ist. iterable kann entweder eine Sequenz, ein Container, der Iteration unterstützt, oder ein Iterator sein. Wenn function
Noneist, wird die Identitätsfunktion angenommen, d.h., alle Elemente von iterable, die falsch sind, werden entfernt.Beachten Sie, dass
filter(function, iterable)äquivalent zu dem Generatorausdruck(item for item in iterable if function(item))ist, wenn Funktion nichtNoneist, und(item for item in iterable if item), wenn FunktionNoneist.Siehe
itertools.filterfalse()für die komplementäre Funktion, die Elemente von iterable zurückgibt, für die function falsch ist.
- class float(number=0.0, /)¶
- class float(string, /)
Gibt eine Gleitkommazahl zurück, die aus einer Zahl oder einer Zeichenkette konstruiert wurde.
Beispiele
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
Wenn das Argument eine Zeichenkette ist, sollte sie eine Dezimalzahl enthalten, optional mit einem Vorzeichen und optional eingebettet in Leerzeichen. Das optionale Vorzeichen kann
'+'oder'-'sein; ein'+'-Zeichen hat keinen Einfluss auf den erzeugten Wert. Das Argument kann auch eine Zeichenkette sein, die NaN (Not-a-Number) oder positive oder negative Unendlichkeit darstellt. Genauer gesagt, die Eingabe muss der Produktionsregelfloatvaluein der folgenden Grammatik entsprechen, nachdem führende und abschließende Leerzeichen entfernt wurden.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]absfloatvalueDie Groß-/Kleinschreibung ist nicht relevant, daher sind zum Beispiel "inf", "Inf", "INFINITY" und "iNfINity" alle akzeptablen Schreibweisen für positive Unendlichkeit.
Wenn das Argument eine ganze Zahl oder eine Gleitkommazahl ist, wird eine Gleitkommazahl mit demselben Wert (innerhalb der Gleitkomma-Genauigkeit von Python) zurückgegeben. Wenn das Argument außerhalb des Bereichs eines Python-Floats liegt, wird ein
OverflowErrorausgelöst.Für ein allgemeines Python-Objekt
xdelegiertfloat(x)anx.__float__(). Wenn__float__()nicht definiert ist, greift es auf__index__()zurück.Siehe auch
float.from_number(), das nur ein numerisches Argument akzeptiert.Wenn kein Argument angegeben wird, wird
0.0zurückgegeben.Der Typ `float` wird in Numerische Typen — int, float, complex beschrieben.
Geändert in Version 3.6: Die Gruppierung von Ziffern mit Unterstrichen wie in Code-Literalen ist erlaubt.
Geändert in Version 3.7: Das Argument ist jetzt positionsgebunden.
Geändert in Version 3.8: Greift auf
__index__()zurück, wenn__float__()nicht definiert ist.
- format(wert, format_spec='', /)¶
Konvertiert einen Wert in eine „formatierte“ Darstellung, gesteuert durch format_spec. Die Interpretation von format_spec hängt vom Typ des Arguments wert ab; es gibt jedoch eine Standardformatierungssyntax, die von den meisten integrierten Typen verwendet wird: Format Specification Mini-Language.
Der Standardwert für format_spec ist eine leere Zeichenkette, was normalerweise den gleichen Effekt hat wie der Aufruf von
str(wert).Ein Aufruf von
format(wert, format_spec)wird übersetzt intype(wert).__format__(wert, format_spec), was das Instanzwörterbuch bei der Suche nach der__format__()-Methode des Werts umgeht. EineTypeError-Ausnahme wird ausgelöst, wenn die Methodensucheobjecterreicht und format_spec nicht leer ist oder wenn entweder format_spec oder der Rückgabewert keine Zeichenketten sind.Geändert in Version 3.4:
object().__format__(format_spec)löstTypeErroraus, wenn format_spec keine leere Zeichenkette ist.
- class frozenset(iterable=(), /)
Gibt ein neues
frozenset-Objekt zurück, optional mit Elementen aus iterable.frozensetist eine eingebaute Klasse. Siehefrozensetund Set Types — set, frozenset für Dokumentation zu dieser Klasse.Für andere Container siehe die eingebauten Klassen
set,list,tupleunddictsowie das Modulcollections.
- getattr(objekt, name, /)¶
- getattr(objekt, name, standardwert, /)
Gibt den Wert des benannten Attributs von objekt zurück. name muss eine Zeichenkette sein. Wenn die Zeichenkette der Name eines der Attribute des Objekts ist, ist das Ergebnis der Wert dieses Attributs. Zum Beispiel ist
getattr(x, 'foobar')äquivalent zux.foobar. Wenn das benannte Attribut nicht existiert, wird standardwert zurückgegeben, wenn dieser angegeben ist, andernfalls wird eineAttributeErrorausgelöst. name muss kein Python-Bezeichner sein (siehesetattr()).Hinweis
Da das private Namens-Mangling (private name mangling) zur Kompilierungszeit erfolgt, muss man den Namen eines privaten Attributs (Attribute mit zwei führenden Unterstrichen) manuell mangeln, um ihn mit
getattr()abrufen zu können.
- globals()¶
Gibt das Wörterbuch zurück, das den aktuellen Modul-Namensraum implementiert. Für Code innerhalb von Funktionen wird dies beim Definieren der Funktion festgelegt und bleibt unabhängig davon, wo die Funktion aufgerufen wird, gleich.
- hasattr(objekt, name, /)¶
Die Argumente sind ein Objekt und eine Zeichenkette. Das Ergebnis ist
True, wenn die Zeichenkette der Name eines der Attribute des Objekts ist,False, wenn nicht. (Dies wird implementiert, indemgetattr(objekt, name)aufgerufen und geprüft wird, ob eineAttributeErrorausgelöst wird oder nicht.)
- hash(objekt, /)¶
Gibt den Hash-Wert des Objekts zurück (falls vorhanden). Hash-Werte sind ganze Zahlen. Sie werden verwendet, um Wörterbuchschlüssel während einer Wörterbuchsuche schnell zu vergleichen. Numerische Werte, die gleich verglichen werden, haben den gleichen Hash-Wert (auch wenn sie von unterschiedlichen Typen sind, wie bei 1 und 1.0).
Hinweis
Bei Objekten mit benutzerdefinierten
__hash__()-Methoden beachten Sie, dasshash()den Rückgabewert basierend auf der Bitbreite des Host-Rechners abschneidet.
- help()¶
- help(anfrage)
Ruft das integrierte Hilfesystem auf. (Diese Funktion ist für den interaktiven Gebrauch bestimmt.) Wenn kein Argument angegeben wird, startet das interaktive Hilfesystem auf der Interpreterkonsole. Wenn das Argument eine Zeichenkette ist, wird die Zeichenkette als Name eines Moduls, einer Funktion, einer Klasse, einer Methode, eines Schlüsselworts oder eines Dokumentationsthemas gesucht, und eine Hilfeseite wird auf der Konsole ausgegeben. Wenn das Argument ein Objekt eines anderen Typs ist, wird eine Hilfeseite für das Objekt generiert.
Beachten Sie, dass, wenn ein Schrägstrich (/) in der Parameterliste einer Funktion beim Aufruf von
help()erscheint, dies bedeutet, dass die Parameter vor dem Schrägstrich Positions-only sind. Weitere Informationen finden Sie im FAQ-Eintrag zu positional-only Parametern.Diese Funktion wird vom Modul
sitein den integrierten Namensraum eingefügt.
- hex(ganzzahl, /)¶
Konvertiert eine Ganzzahl in eine kleingeschriebene Hexadezimalzeichenkette, die mit „0x“ präfixiert ist. Wenn ganzzahl kein Python
int-Objekt ist, muss es eine__index__()-Methode definieren, die eine Ganzzahl zurückgibt. Einige Beispiele>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
Wenn Sie eine Ganzzahl in eine groß- oder kleingeschriebene Hexadezimalzeichenkette mit oder ohne Präfix konvertieren möchten, können Sie eine der folgenden Methoden verwenden
>>> '%#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')
Siehe auch
format()für weitere Informationen.Siehe auch
int()zum Konvertieren einer Hexadezimalzeichenkette in eine Ganzzahl mit der Basis 16.Hinweis
Um eine Hexadezimalzeichenkettenrepräsentation für eine Gleitkommazahl zu erhalten, verwenden Sie die Methode
float.hex().
- id(objekt, /)¶
Gibt die „Identität“ eines Objekts zurück. Dies ist eine Ganzzahl, die für dieses Objekt während seiner Lebensdauer garantiert eindeutig und konstant ist. Zwei Objekte mit nicht überlappenden Lebensdauern können den gleichen
id()-Wert haben.CPython-Implementierungsdetails: Dies ist die Speicheradresse des Objekts.
Löst ein Audit-Ereignis
builtins.idmit dem Argumentidaus.
- input()¶
- input(prompt, /)
Wenn das Argument prompt vorhanden ist, wird es ohne abschließendes Zeilenumbruchzeichen auf die Standardausgabe geschrieben. Die Funktion liest dann eine Zeile von der Eingabe, konvertiert sie in eine Zeichenkette (wobei ein abschließender Zeilenumbruch entfernt wird) und gibt diese zurück. Wenn EOF gelesen wird, wird
EOFErrorausgelöst. Beispiel>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Wenn das Modul
readlinegeladen wurde, verwendetinput()es, um aufwendige Zeilenbearbeitungs- und Verlaufsfunktionen bereitzustellen.Löst ein Audit-Ereignis
builtins.inputmit dem Argumentpromptaus, bevor die Eingabe gelesen wird.Löst ein Audit-Ereignis
builtins.input/resultmit dem Ergebnis aus, nachdem die Eingabe erfolgreich gelesen wurde.
- class int(zahl=0, /)¶
- class int(string, /, basis=10)
Gibt ein Ganzzahl-Objekt zurück, das aus einer Zahl oder einer Zeichenkette konstruiert wurde, oder gibt
0zurück, wenn keine Argumente gegeben werden.Beispiele
>>> 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
Wenn das Argument
__int__()definiert, gibtint(x)x.__int__()zurück. Wenn das Argument__index__()definiert, gibt esx.__index__()zurück. Bei Gleitkommazahlen wird hierbei gegen Null abgerundet.Wenn das Argument keine Zahl ist oder Basis angegeben ist, muss es eine Zeichenkette,
bytesoderbytearray-Instanz sein, die eine Ganzzahl in Basis basis darstellt. Optional kann die Zeichenkette mit+oder-(ohne Leerzeichen dazwischen) vorangestellt sein, führende Nullen aufweisen, von Leerzeichen umgeben sein und einzelne Unterstriche zwischen den Ziffern enthalten.Eine Basis-n-Ganzzahlzeichenkette enthält Ziffern, die jeweils einen Wert von 0 bis n-1 darstellen. Die Werte 0-9 können durch beliebige Unicode-Dezimalziffern dargestellt werden. Die Werte 10-35 können durch
abisz(oderAbisZ) dargestellt werden. Die Standardbasis ist 10. Die zulässigen Basen sind 0 und 2-36. Basis-2, -8 und -16 Zeichenketten können optional mit0b/0B,0o/0Ooder0x/0Xpräfixiert sein, wie bei Ganzzahl-Literalen im Code. Für Basis 0 wird die Zeichenkette ähnlich wie ein Ganzzahl-Literal im Code interpretiert, wobei die tatsächliche Basis 2, 8, 10 oder 16 ist, wie durch das Präfix bestimmt. Basis 0 erlaubt auch keine führenden Nullen:int('010', 0)ist nicht zulässig, währendint('010')undint('010', 8)es sind.Der Ganzzahltyp ist in Numeric Types — int, float, complex beschrieben.
Geändert in Version 3.4: Wenn basis keine Instanz von
intist und das basis-Objekt einebase.__index__-Methode hat, wird diese Methode aufgerufen, um eine Ganzzahl für die Basis zu erhalten. Frühere Versionen verwendetenbase.__int__anstelle vonbase.__index__.Geändert in Version 3.6: Die Gruppierung von Ziffern mit Unterstrichen wie in Code-Literalen ist erlaubt.
Geändert in Version 3.7: Der erste Parameter ist jetzt positional-only.
Geändert in Version 3.8: Fällt auf
__index__()zurück, wenn__int__()nicht definiert ist.Geändert in Version 3.11:
int-Zeichenketteneingaben und Zeichenkettenrepräsentationen können begrenzt werden, um Denial-of-Service-Angriffe zu vermeiden. EineValueErrorwird ausgelöst, wenn das Limit beim Konvertieren einer Zeichenkette in eineintüberschritten wird oder wenn das Konvertieren einerintin eine Zeichenkette das Limit überschreiten würde. Siehe die Dokumentation integer string conversion length limitation.Geändert in Version 3.14:
int()delegiert nicht mehr an die Methode__trunc__().
- isinstance(objekt, klasseinfo, /)¶
Gibt
Truezurück, wenn das Argument objekt eine Instanz des Arguments klasseinfo ist, oder einer (direkten, indirekten oder virtuellen) Unterklasse davon. Wenn objekt kein Objekt des angegebenen Typs ist, gibt die Funktion immerFalsezurück. Wenn klasseinfo ein Tupel von Typobjekten ist (oder rekursiv, andere solche Tupel) oder ein Union Type mehrerer Typen, gibt sieTruezurück, wenn objekt eine Instanz eines der Typen ist. Wenn klasseinfo kein Typ oder Tupel von Typen und solchen Tupeln ist, wird eineTypeError-Ausnahme ausgelöst.TypeErrorwird möglicherweise nicht für einen ungültigen Typ ausgelöst, wenn eine frühere Prüfung erfolgreich ist.Geändert in Version 3.10: klasseinfo kann ein Union Type sein.
- issubclass(klasse, klasseinfo, /)¶
Gibt
Truezurück, wenn klasse eine Unterklasse (direkt, indirekt oder virtuell) von klasseinfo ist. Eine Klasse gilt als Unterklasse von sich selbst. klasseinfo kann ein Tupel von Klassenobjekten sein (oder rekursiv, andere solche Tupel) oder ein Union Type, in diesem Fall gibt sieTruezurück, wenn klasse eine Unterklasse eines Eintrags in klasseinfo ist. In allen anderen Fällen wird eineTypeError-Ausnahme ausgelöst.Geändert in Version 3.10: klasseinfo kann ein Union Type sein.
- iter(iterable, /)¶
- iter(callable, sentinel, /)
Gibt ein Iterator-Objekt zurück. Das erste Argument wird sehr unterschiedlich interpretiert, abhängig von der Anwesenheit des zweiten Arguments. Ohne ein zweites Argument muss das einzelne Argument ein Sammlungsobjekt sein, das das Iterable-Protokoll (die
__iter__()-Methode) unterstützt, oder es muss das Sequenzprotokoll unterstützen (die__getitem__()-Methode mit Ganzzahlargumenten, beginnend bei0). Wenn keines dieser Protokolle unterstützt wird, wird eineTypeErrorausgelöst. Wenn das zweite Argument, sentinel, gegeben ist, dann muss das erste Argument ein aufrufbares Objekt sein. Der in diesem Fall erstellte Iterator ruft callable ohne Argumente für jeden Aufruf seiner__next__()-Methode auf; wenn der zurückgegebene Wert gleich sentinel ist, wirdStopIterationausgelöst, andernfalls wird der Wert zurückgegeben.Siehe auch Iterator Types.
Eine nützliche Anwendung der zweiten Form von
iter()ist die Erstellung eines Block-Readers. Zum Beispiel das Lesen von Blöcken fester Größe aus einer binären Datenbankdatei bis zum Erreichen des Dateiendesfrom functools import partial with open('mydata.db', 'rb') as f: for block in iter(partial(f.read, 64), b''): process_block(block)
- len(objekt, /)¶
Gibt die Länge (die Anzahl der Elemente) eines Objekts zurück. Das Argument kann eine Sequenz sein (wie eine Zeichenkette, Bytes, Tupel, Liste oder Bereich) oder eine Sammlung (wie ein Wörterbuch, Set oder Frozenset).
CPython-Implementierungsdetails:
lenlöstOverflowErrorbei Längen größer alssys.maxsizeaus, wie z.B.range(2 ** 100).
- class list(iterable=(), /)
Anstatt eine Funktion zu sein, ist
listtatsächlich ein veränderbarer Sequenztyp, wie in Lists und Sequence Types — list, tuple, range dokumentiert.
- locals()¶
Gibt ein Mapping-Objekt zurück, das die aktuelle lokale Symboltabelle darstellt, wobei die Variablennamen die Schlüssel und ihre aktuell gebundenen Referenzen die Werte sind.
Auf Modulebene sowie bei der Verwendung von
exec()odereval()mit einem einzelnen Namensraum gibt diese Funktion denselben Namensraum wieglobals()zurück.Auf Klassenebene gibt es den Namensraum zurück, der an den Konstruktor der Metaklasse übergeben wird.
Bei Verwendung von
exec()odereval()mit separaten lokalen und globalen Argumenten gibt es den lokalen Namensraum zurück, der dem Funktionsaufruf übergeben wurde.In allen oben genannten Fällen gibt jeder Aufruf von
locals()in einem gegebenen Ausführungsrahmen dasselbe Mapping-Objekt zurück. Änderungen, die über das vonlocals()zurückgegebene Mapping-Objekt vorgenommen werden, sind als zugewiesene, neu zugewiesene oder gelöschte lokale Variablen sichtbar, und das Zuweisen, Neu-Zuweisen oder Löschen lokaler Variablen wirkt sich sofort auf den Inhalt des zurückgegebenen Mapping-Objekts aus.In einem optimierten Geltungsbereich (einschließlich Funktionen, Generatoren und Coroutinen) gibt jeder Aufruf von
locals()stattdessen ein neues Wörterbuch zurück, das die aktuellen Bindungen der lokalen Variablen der Funktion und aller nichtlokalen Zellreferenzen enthält. In diesem Fall werden Namensbindungsänderungen, die über das zurückgegebene Wörterbuch vorgenommen werden, **nicht** in die entsprechenden lokalen Variablen oder nichtlokalen Zellreferenzen zurückgeschrieben, und das Zuweisen, Neu-Zuweisen oder Löschen lokaler Variablen und nichtlokaler Zellreferenzen wirkt sich **nicht** auf den Inhalt zuvor zurückgegebener Wörterbücher aus.Der Aufruf von
locals()als Teil einer Comprehension in einer Funktion, einem Generator oder einer Coroutine ist äquivalent zum Aufruf im umschließenden Geltungsbereich, mit der Ausnahme, dass die initialisierten Iterationsvariablen der Comprehension enthalten sind. In anderen Geltungsbereichen verhält es sich so, als würde die Comprehension als verschachtelte Funktion ausgeführt.Der Aufruf von
locals()als Teil eines Generatorausdrucks ist äquivalent zum Aufruf in einer verschachtelten Generatorfunktion.Geändert in Version 3.12: Das Verhalten von
locals()in einer Comprehension wurde wie in PEP 709 beschrieben aktualisiert.Geändert in Version 3.13: Als Teil von PEP 667 sind die Semantiken der Mutation der von dieser Funktion zurückgegebenen Mapping-Objekte nun definiert. Das Verhalten in optimierten Geltungsbereichen ist nun wie oben beschrieben. Abgesehen davon, dass sie definiert sind, bleibt das Verhalten in anderen Geltungsbereichen im Vergleich zu früheren Versionen unverändert.
- map(funktion, iterable, /, *iterables, streng=False)¶
Gibt einen Iterator zurück, der die function auf jedes Element von iterable anwendet und die Ergebnisse liefert. Werden zusätzliche iterables-Argumente übergeben, muss function so viele Argumente akzeptieren und wird parallel auf die Elemente aller Iterables angewendet. Bei mehreren Iterables stoppt der Iterator, sobald das kürzeste Iterable erschöpft ist. Wenn strict auf
Truegesetzt ist und eines der Iterables vor den anderen erschöpft ist, wird einValueErrorausgelöst. Für Fälle, in denen die Funktionsargumente bereits in Tupeln angeordnet sind, sieheitertools.starmap().Geändert in Version 3.14: Der Parameter strict wurde hinzugefügt.
- max(iterable, /, *, key=None)¶
- max(iterable, /, *, default, key=None)
- max(arg1, arg2, /, *args, key=None)
Gibt das größte Element in einem Iterable oder das größte von zwei oder mehr Argumenten zurück.
Wenn ein positionsbezogenes Argument angegeben wird, sollte es ein Iterable sein. Das größte Element im Iterable wird zurückgegeben. Wenn zwei oder mehr positionsbezogene Argumente angegeben werden, wird das größte der positionsbezogenen Argumente zurückgegeben.
Es gibt zwei optionale schlüsselwortbasierte Argumente. Das Argument key gibt eine einargumentige Ordnungsfunktion an, wie sie für
list.sort()verwendet wird. Das Argument default gibt ein Objekt an, das zurückgegeben wird, wenn das angegebene Iterable leer ist. Wenn das Iterable leer ist und default nicht angegeben wird, wird einValueErrorausgelöst.Wenn mehrere Elemente maximal sind, gibt die Funktion das erste gefundene Element zurück. Dies ist konsistent mit anderen Werkzeugen, die die Sortierstabilität beibehalten, wie z. B.
sorted(iterable, key=keyfunc, reverse=True)[0]undheapq.nlargest(1, iterable, key=keyfunc).Geändert in Version 3.4: Der schlüsselwortbasierte Parameter default wurde hinzugefügt.
Geändert in Version 3.8: Der key kann
Nonesein.
- class memoryview(object)
Gibt eine "Memory View" zurück, die aus dem angegebenen Argument erstellt wurde. Weitere Informationen finden Sie unter Speicheransichten.
- min(iterable, /, *, key=None)¶
- min(iterable, /, *, default, key=None)
- min(arg1, arg2, /, *args, key=None)
Gibt das kleinste Element in einem Iterable oder das kleinste von zwei oder mehr Argumenten zurück.
Wenn ein positionsbezogenes Argument angegeben wird, sollte es ein Iterable sein. Das kleinste Element im Iterable wird zurückgegeben. Wenn zwei oder mehr positionsbezogene Argumente angegeben werden, wird das kleinste der positionsbezogenen Argumente zurückgegeben.
Es gibt zwei optionale schlüsselwortbasierte Argumente. Das Argument key gibt eine einargumentige Ordnungsfunktion an, wie sie für
list.sort()verwendet wird. Das Argument default gibt ein Objekt an, das zurückgegeben wird, wenn das angegebene Iterable leer ist. Wenn das Iterable leer ist und default nicht angegeben wird, wird einValueErrorausgelöst.Wenn mehrere Elemente minimal sind, gibt die Funktion das erste gefundene Element zurück. Dies ist konsistent mit anderen Werkzeugen, die die Sortierstabilität beibehalten, wie z. B.
sorted(iterable, key=keyfunc)[0]undheapq.nsmallest(1, iterable, key=keyfunc).Geändert in Version 3.4: Der schlüsselwortbasierte Parameter default wurde hinzugefügt.
Geändert in Version 3.8: Der key kann
Nonesein.
- next(iterator, /)¶
- next(iterator, default, /)
Ruft das nächste Element aus dem Iterator ab, indem seine
__next__()-Methode aufgerufen wird. Wenn default angegeben ist, wird es zurückgegeben, wenn der Iterator erschöpft ist, andernfalls wirdStopIterationausgelöst.
- class object¶
Dies ist die ultimative Basisklasse aller anderen Klassen. Sie hat Methoden, die für alle Instanzen von Python-Klassen gemeinsam sind. Wenn der Konstruktor aufgerufen wird, gibt er ein neues, merkmalsloses Objekt zurück. Der Konstruktor akzeptiert keine Argumente.
- oct(integer, /)¶
Konvertiert eine ganze Zahl in eine Oktalzeichenkette, die mit "0o" präfixiert ist. Das Ergebnis ist ein gültiger Python-Ausdruck. Wenn integer kein Python
int-Objekt ist, muss es eine__index__()-Methode definieren, die eine Ganzzahl zurückgibt. Zum Beispiel>>> oct(8) '0o10' >>> oct(-56) '-0o70'
Wenn Sie eine ganze Zahl in eine Oktalzeichenkette konvertieren möchten, entweder mit oder ohne das Präfix "0o", können Sie eine der folgenden Methoden verwenden.
>>> '%#o' % 10, '%o' % 10 ('0o12', '12') >>> format(10, '#o'), format(10, 'o') ('0o12', '12') >>> f'{10:#o}', f'{10:o}' ('0o12', '12')
Siehe auch
format()für weitere Informationen.
- open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)¶
Öffnet die Datei file und gibt ein entsprechendes Dateiobjekt zurück. Wenn die Datei nicht geöffnet werden kann, wird ein
OSErrorausgelöst. Weitere Beispiele für die Verwendung dieser Funktion finden Sie unter Lesen und Schreiben von Dateien.file ist ein pfadähnliches Objekt, das den Pfadnamen (absolut oder relativ zum aktuellen Arbeitsverzeichnis) der zu öffnenden Datei angibt, oder ein Dateideskriptor (eine Ganzzahl) der zu umhüllenden Datei. (Wenn ein Dateideskriptor angegeben wird, wird er geschlossen, wenn das zurückgegebene I/O-Objekt geschlossen wird, es sei denn, closefd ist auf
Falsegesetzt.)mode ist eine optionale Zeichenkette, die den Modus angibt, in dem die Datei geöffnet wird. Der Standardwert ist
'r', was bedeutet, dass die Datei zum Lesen im Textmodus geöffnet wird. Andere gängige Werte sind'w'zum Schreiben (wobei die Datei geleert wird, falls sie bereits existiert),'x'für exklusive Erstellung und'a'zum Anhängen (was unter einigen Unix-Systemen bedeutet, dass alle Schreibvorgänge am Ende der Datei angehängt werden, unabhängig von der aktuellen Suchposition). Im Textmodus, wenn encoding nicht angegeben ist, wird die verwendete Kodierung plattformabhängig ermittelt:locale.getencoding()wird aufgerufen, um die aktuelle Locale-Kodierung zu erhalten. (Zum Lesen und Schreiben roher Bytes verwenden Sie den Binärmodus und lassen Sie encoding unbestimmt.) Die verfügbaren Modi sindZeichen
Bedeutung
'r'Zum Lesen öffnen (Standard)
'w'Zum Schreiben öffnen, wobei die Datei zuerst geleert wird
'x'Zum exklusiven Erstellen öffnen, Fehler bei bereits vorhandener Datei
'a'Zum Schreiben öffnen, Anhängen an das Ende der Datei, falls vorhanden
'b'Binärmodus
't'Textmodus (Standard)
'+'Zum Aktualisieren öffnen (Lesen und Schreiben)
Der Standardmodus ist
'r'(Lesen im Textmodus, eine Abkürzung für'rt'). Die Modi'w+'und'w+b'öffnen und leeren die Datei. Die Modi'r+'und'r+b'öffnen die Datei ohne Leerung.Wie in der Übersicht erwähnt, unterscheidet Python zwischen binärer und Text-I/O. Im Binärmodus geöffnete Dateien (einschließlich
'b'im mode-Argument) geben Inhalte alsbytes-Objekte ohne Dekodierung zurück. Im Textmodus (Standard oder wenn't'im mode-Argument enthalten ist) werden die Inhalte der Datei alsstrzurückgegeben, wobei die Bytes zuerst mit einer plattformabhängigen Kodierung oder mit der angegebenen encoding (falls vorhanden) dekodiert wurden.Hinweis
Python ist nicht auf die zugrunde liegende Vorstellung des Betriebssystems von Textdateien angewiesen; die gesamte Verarbeitung wird von Python selbst durchgeführt und ist daher plattformunabhängig.
buffering ist eine optionale Ganzzahl, die zur Einstellung der Pufferungsrichtlinie verwendet wird. Übergeben Sie 0, um die Pufferung zu deaktivieren (nur im Binärmodus erlaubt), 1, um zeilenweise Pufferung zu wählen (nur beim Schreiben im Textmodus verwendbar), und eine Ganzzahl größer als 1, um die Puffergröße in Bytes für einen festen Puffer anzugeben. Beachten Sie, dass die Angabe einer Puffergröße auf diese Weise für binäre gepufferte I/O gilt, aber
TextIOWrapper(d. h. Dateien, die mitmode='r+'geöffnet wurden) eine andere Pufferung hätte. Um die Pufferung inTextIOWrapperzu deaktivieren, sollten Sie die Optionwrite_throughfürio.TextIOWrapper.reconfigure()in Betracht ziehen. Wenn kein buffering-Argument angegeben wird, verhält sich die Standardpufferungsrichtlinie wie folgtBinärdateien werden in festen Chunks gepuffert; die Puffergröße ist
max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE), wenn die Blockgröße des Geräts verfügbar ist. Auf den meisten Systemen ist der Puffer typischerweise 128 Kilobyte groß."Interaktive" Textdateien (Dateien, für die
isatty()Truezurückgibt) verwenden zeilenweise Pufferung. Andere Textdateien verwenden die oben für Binärdateien beschriebene Richtlinie.
encoding ist der Name der Kodierung, die zum Dekodieren oder Kodieren der Datei verwendet wird. Dies sollte nur im Textmodus verwendet werden. Die Standardkodierung ist plattformabhängig (was immer
locale.getencoding()zurückgibt), aber jede von Python unterstützte Textkodierung kann verwendet werden. Sehen Sie sich das Modulcodecsfür die Liste der unterstützten Kodierungen an.errors ist eine optionale Zeichenkette, die angibt, wie Kodierungs- und Dekodierungsfehler behandelt werden sollen – dies kann nicht im Binärmodus verwendet werden. Eine Vielzahl von Standard-Fehlerbehandlern ist verfügbar (aufgelistet unter Fehlerbehandler), aber jeder Fehlerbehandlungsname, der mit
codecs.register_error()registriert wurde, ist ebenfalls gültig. Die Standardnamen umfassen'strict'zum Auslösen einerValueError-Ausnahme, wenn ein Kodierungsfehler auftritt. Der Standardwert vonNonehat denselben Effekt.'ignore'ignoriert Fehler. Beachten Sie, dass das Ignorieren von Kodierungsfehlern zu Datenverlust führen kann.'replace'ersetzt fehlerhafte Daten durch ein Platzhalterzeichen (z. B.'?').'surrogateescape'stellt fehlerhafte Bytes als niedere Surrogat-Codeeinheiten im Bereich von U+DC80 bis U+DCFF dar. Diese Surrogat-Codeeinheiten werden dann wieder in dieselben Bytes umgewandelt, wenn der Fehlerbehandlersurrogateescapebeim Schreiben von Daten verwendet wird. Dies ist nützlich für die Verarbeitung von Dateien in einer unbekannten Kodierung.'xmlcharrefreplace'ist nur beim Schreiben in eine Datei unterstützt. Nicht von der Kodierung unterstützte Zeichen werden durch die entsprechende XML-Zeichenreferenz&#nnn;ersetzt.'backslashreplace'ersetzt fehlerhafte Daten durch Escapesequenzen mit Backslash von Python.'namereplace'(ebenfalls nur beim Schreiben unterstützt) ersetzt nicht unterstützte Zeichen durch\N{...}-Escapesequenzen.
newline bestimmt, wie Zeilenumbruchzeichen aus dem Stream geparst werden. Es kann
None,'','\n','\r'und'\r\n'sein. Es funktioniert wie folgt:Beim Lesen von Eingaben aus dem Stream, wenn newline
Noneist, ist der universelle Zeilenumbruchmodus aktiviert. Zeilen in der Eingabe können mit'\n','\r'oder'\r\n'enden, und diese werden in'\n'übersetzt, bevor sie an den Aufrufer zurückgegeben werden. Wenn es''ist, ist der universelle Zeilenumbruchmodus aktiviert, aber die Zeilenenden werden unübersetzt an den Aufrufer zurückgegeben. Wenn es einen der anderen gültigen Werte hat, werden Eingabezeilen nur durch die angegebene Zeichenkette beendet, und das Zeilenende wird unübersetzt an den Aufrufer zurückgegeben.Beim Schreiben von Ausgaben in den Stream, wenn newline
Noneist, werden alle geschriebenen'\n'-Zeichen in den systemweiten Zeilentrenneros.linesepübersetzt. Wenn newline''oder'\n'ist, findet keine Übersetzung statt. Wenn newline einer der anderen gültigen Werte ist, werden alle geschriebenen'\n'-Zeichen in die angegebene Zeichenkette übersetzt.
Wenn closefd
Falseist und anstelle eines Dateinamens ein Dateideskriptor angegeben wurde, wird der zugrunde liegende Dateideskriptor beim Schließen der Datei offen gehalten. Wenn ein Dateiname angegeben wird, muss closefdTrue(Standard) sein, andernfalls wird ein Fehler ausgelöst.Ein benutzerdefinierter Öffner kann durch Übergabe eines aufrufbaren Objekts als opener verwendet werden. Der zugrunde liegende Dateideskriptor für das Dateiobjekt wird dann durch Aufruf von opener mit (file, flags) ermittelt. opener muss einen offenen Dateideskriptor zurückgeben (die Übergabe von
os.openals opener ergibt eine Funktionalität, die der Übergabe vonNoneähnelt).Die neu erstellte Datei ist nicht vererbbar.
Das folgende Beispiel verwendet den Parameter dir_fd der Funktion
os.open(), um eine Datei relativ zu einem gegebenen Verzeichnis zu öffnen.>>> 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
Der Typ des von der Funktion
open()zurückgegebenen Dateiobjekts hängt vom Modus ab. Wennopen()zum Öffnen einer Datei im Textmodus verwendet wird ('w','r','wt','rt'usw.), gibt es eine Unterklasse vonio.TextIOBasezurück (speziellio.TextIOWrapper). Wenn es zum Öffnen einer Datei im Binärmodus mit Pufferung verwendet wird, ist die zurückgegebene Klasse eine Unterklasse vonio.BufferedIOBase. Die genaue Klasse variiert: im Lesemodus gibt esio.BufferedReaderzurück; im Schreib- und Anhängemodus gibt esio.BufferedWriterzurück, und im Lese-/Schreibmodus gibt esio.BufferedRandomzurück. Wenn die Pufferung deaktiviert ist, wird der rohe Stream, eine Unterklasse vonio.RawIOBase,io.FileIO, zurückgegeben.Siehe auch die Dateibehandlungsmodule wie
fileinput,io(woopen()deklariert ist),os,os.path,tempfileundshutil.Löst ein Auditing-Ereignis
openmit den Argumentenpath,mode,flagsaus.Die Argumente
modeundflagswurden möglicherweise modifiziert oder aus dem ursprünglichen Aufruf abgeleitet.Geändert in Version 3.3
Der Parameter opener wurde hinzugefügt.
Der Modus
'x'wurde hinzugefügt.IOErrorwurde früher ausgelöst, jetzt ist er ein Alias fürOSError.FileExistsErrorwird nun ausgelöst, wenn die im exklusiven Erstellungsmodus ('x') geöffnete Datei bereits existiert.
Geändert in Version 3.4
Die Datei ist jetzt nicht vererbbar.
Geändert in Version 3.5
Wenn der Systemaufruf unterbrochen wird und der Signalhandler keine Ausnahme auslöst, versucht die Funktion nun, den Systemaufruf erneut zu starten, anstatt eine
InterruptedError-Ausnahme auszulösen (siehe PEP 475 für die Begründung).Der Fehlerbehandler
'namereplace'wurde hinzugefügt.
Geändert in Version 3.6
Unterstützung für Objekte, die
os.PathLikeimplementieren, wurde hinzugefügt.Unter Windows kann das Öffnen eines Konsolenpuffers eine Unterklasse von
io.RawIOBasezurückgeben, die sich vonio.FileIOunterscheidet.
Geändert in Version 3.11: Der Modus
'U'wurde entfernt.
- ord(character, /)¶
Gibt den ordinalen Wert eines Zeichens zurück.
Wenn das Argument eine einzeichenige Zeichenkette ist, gibt es den Unicode-Codepunkt dieses Zeichens zurück. Zum Beispiel gibt
ord('a')die Ganzzahl97zurück undord('€')(Eurozeichen) gibt8364zurück. Dies ist die Umkehrung vonchr().Wenn das Argument ein
bytes- oderbytearray-Objekt der Länge 1 ist, gibt es dessen einzelnen Byte-Wert zurück. Zum Beispiel gibtord(b'a')die Ganzzahl97zurück.
- pow(base, exp, mod=None)¶
Gibt base zur Potenz exp zurück; wenn mod vorhanden ist, gibt es base zur Potenz exp modulo mod zurück (effizienter berechnet als
pow(base, exp) % mod). Die Zwei-Argument-Formpow(base, exp)ist äquivalent zur Verwendung des Potenzoperators:base**exp.Wenn Argumente eingebaute numerische Typen mit gemischten Operanden-Typen sind, gelten die Koerzionsregeln für binäre arithmetische Operatoren. Für
int-Operanden hat das Ergebnis denselben Typ wie die Operanden (nach Koerzion), es sei denn, das zweite Argument ist negativ; in diesem Fall werden alle Argumente in Float konvertiert und ein Float-Ergebnis geliefert. Zum Beispiel gibtpow(10, 2)100zurück, aberpow(10, -2)gibt0.01zurück. Für eine negative Basis vom Typintoderfloatund einen nicht-ganzzahligen Exponenten wird ein komplexes Ergebnis geliefert. Zum Beispiel liefertpow(-9, 0.5)einen Wert nahe3j. Während für eine negative Basis vom Typintoderfloatmit einem ganzzahligen Exponenten ein Float-Ergebnis geliefert wird. Zum Beispiel gibtpow(-9, 2.0)81.0zurück.Für
int-Operanden base und exp muss mod, wenn es vorhanden ist, ebenfalls vom Ganzzahltyp sein und mod darf nicht Null sein. Wenn mod vorhanden ist und exp negativ ist, muss base relativ prim zu mod sein. In diesem Fall wirdpow(inv_base, -exp, mod)zurückgegeben, wobei inv_base das inverse Element von base modulo mod ist.Hier ist ein Beispiel für die Berechnung des Inversen von
38modulo97>>> pow(38, -1, mod=97) 23 >>> 23 * 38 % 97 == 1 True
Geändert in Version 3.8: Für
int-Operanden erlaubt die Drei-Argument-Form vonpownun, dass das zweite Argument negativ ist, was die Berechnung modularer Inversen ermöglicht.Geändert in Version 3.8: Schlüsselwortargumente sind nun erlaubt. Zuvor waren nur positionsbezogene Argumente unterstützt.
- print(*objects, sep=' ', end='\n', file=None, flush=False)¶
Gibt die objects in den Textstrom file aus, getrennt durch sep und gefolgt von end. sep, end, file und flush, falls vorhanden, müssen als Schlüsselwortargumente übergeben werden.
Alle Nicht-Schlüsselwortargumente werden wie mit
str()in Zeichenketten umgewandelt und in den Strom geschrieben, getrennt durch sep und gefolgt von end. Sowohl sep als auch end müssen Zeichenketten sein; sie können auchNonesein, was bedeutet, dass die Standardwerte verwendet werden. Wenn keine objects angegeben werden, schreibtprint()nur end.Das file-Argument muss ein Objekt mit einer
write(string)-Methode sein; wenn diese nicht vorhanden oderNoneist, wirdsys.stdoutverwendet. Da gedruckte Argumente in Textzeichenketten umgewandelt werden, kannprint()nicht mit Binärdateiobjekten verwendet werden. Verwenden Sie stattdessenfile.write(...).Die Ausgabe-Pufferung wird normalerweise durch file bestimmt. Wenn jedoch flush wahr ist, wird der Strom zwangsweise geleert.
Geändert in Version 3.3: Das Schlüsselwortargument flush wurde hinzugefügt.
- class property(fget=None, fset=None, fdel=None, doc=None)¶
Gibt ein Eigenschaftsattribut zurück.
fget ist eine Funktion zum Abrufen eines Attributwerts. fset ist eine Funktion zum Setzen eines Attributwerts. fdel ist eine Funktion zum Löschen eines Attributwerts. Und doc erstellt einen Docstring für das Attribut.
Ein typischer Anwendungsfall ist die Definition eines verwalteten Attributs
xclass 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.")
Wenn c eine Instanz von C ist, ruft
c.xden Getter auf,c.x = valueruft den Setter auf unddel c.xruft den Deleter auf.Wenn angegeben, ist doc der Docstring des Eigenschaftsattributs. Andernfalls kopiert die Eigenschaft den Docstring von fget (falls vorhanden). Dies ermöglicht die einfache Erstellung schreibgeschützter Eigenschaften mit
property()als Decoratorclass Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Get the current voltage.""" return self._voltage
Der
@property-Decorator wandelt die Methodevoltage()in einen "Getter" für ein schreibgeschütztes Attribut mit demselben Namen um und setzt den Docstring für voltage auf "Get the current voltage."- @getter¶
- @setter¶
- @deleter¶
Ein Eigenschaftsobjekt hat die Methoden
getter,setterunddeleter, die als Decorators verwendet werden können und eine Kopie der Eigenschaft mit der entsprechenden Zugriffsfunktion, die auf die dekorierte Funktion gesetzt ist, erstellen. Dies wird am besten anhand eines Beispiels erklärtclass 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
Dieser Code ist exakt äquivalent zum ersten Beispiel. Achten Sie darauf, den zusätzlichen Funktionen denselben Namen wie der ursprünglichen Eigenschaft zu geben (in diesem Fall
x).Das zurückgegebene Eigenschaftsobjekt hat auch die Attribute
fget,fsetundfdel, die den Konstruktorargumenten entsprechen.
Geändert in Version 3.5: Die Docstrings von Eigenschaftsobjekten sind nun beschreibbar.
- __name__¶
Attribut, das den Namen der Eigenschaft enthält. Der Name der Eigenschaft kann zur Laufzeit geändert werden.
Hinzugefügt in Version 3.13.
- class range(stop, /)
- class range(start, stop, step=1, /)
Anstatt eine Funktion zu sein, ist
rangetatsächlich ein unveränderlicher Sequenztyp, wie in Ranges und Sequenztypen — list, tuple, range dokumentiert.
- repr(object, /)¶
Gibt eine Zeichenkette mit einer druckbaren Darstellung eines Objekts zurück. Für viele Typen versucht diese Funktion, eine Zeichenkette zurückzugeben, die beim Übergeben an
eval()ein Objekt mit demselben Wert ergibt; andernfalls ist die Darstellung eine Zeichenkette, die in spitze Klammern eingeschlossen ist und den Namen des Typs des Objekts zusammen mit zusätzlichen Informationen, oft einschließlich des Namens und der Adresse des Objekts, enthält. Eine Klasse kann steuern, was diese Funktion für ihre Instanzen zurückgibt, indem sie eine__repr__()-Methode definiert. Wennsys.displayhook()nicht zugänglich ist, löst diese FunktionRuntimeErroraus.Diese Klasse hat eine benutzerdefinierte Darstellung, die ausgewertet werden kann
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, /)¶
Gibt einen umgekehrten Iterator zurück. Das Argument muss ein Objekt sein, das eine
__reversed__()-Methode hat oder das Sequenzprotokoll unterstützt (die__len__()-Methode und die__getitem__()-Methode mit ganzzahligen Argumenten ab0).
- round(number, ndigits=None)¶
Gibt number gerundet auf ndigits Dezimalstellen zurück. Wenn ndigits weggelassen wird oder
Noneist, gibt sie die nächste ganze Zahl zu ihrer Eingabe zurück.Für die integrierten Typen, die
round()unterstützen, werden Werte auf das nächste Vielfache von 10 zur Potenz minus ndigits gerundet; wenn zwei Vielfache gleich nahe sind, wird zum geraden Wert gerundet (also sind zum Beispiel sowohlround(0.5)als auchround(-0.5)0undround(1.5)2). Jeder ganzzahlige Wert ist für ndigits gültig (positiv, null oder negativ). Der Rückgabewert ist eine ganze Zahl, wenn ndigits weggelassen wird oderNoneist. Andernfalls hat der Rückgabewert denselben Typ wie number.Für ein allgemeines Python-Objekt
numberdelegiertroundannumber.__round__.Hinweis
Das Verhalten von
round()für Gleitkommazahlen kann überraschend sein: Zum Beispiel ergibtround(2.675, 2)2.67anstelle des erwarteten2.68. Dies ist kein Fehler: Es ist das Ergebnis der Tatsache, dass die meisten Dezimalbrüche nicht exakt als Gleitkommazahl dargestellt werden können. Weitere Informationen finden Sie unter Gleitkomma-Arithmetik: Probleme und Einschränkungen.
- class set(iterable=(), /)
Gibt ein neues
set-Objekt zurück, optional mit Elementen aus iterable.setist eine eingebaute Klasse. Dokumentation zu dieser Klasse finden Sie untersetund Mengen-Typen — set, frozenset.Andere Container finden Sie in den integrierten Klassen
frozenset,list,tupleunddictsowie im Modulcollections.
- setattr(object, name, value, /)¶
Dies ist das Gegenstück zu
getattr(). Die Argumente sind ein Objekt, eine Zeichenkette und ein beliebiger Wert. Die Zeichenkette kann einen vorhandenen Attributnamen oder einen neuen Attributnamen benennen. Die Funktion weist dem Attribut den Wert zu, sofern das Objekt dies zulässt. Zum Beispiel istsetattr(x, 'foobar', 123)äquivalent zux.foobar = 123.name muss kein Python-Bezeichner gemäß der Definition in Namen (Bezeichner und Schlüsselwörter) sein, es sei denn, das Objekt erzwingt dies, z. B. in einer benutzerdefinierten
__getattribute__()oder über__slots__. Ein Attribut, dessen Name kein Bezeichner ist, ist über die Punktnotation nicht zugänglich, aber übergetattr()usw. zugänglich.Hinweis
Da das Mangle von privaten Namen zur Kompilierungszeit erfolgt, muss der Name eines privaten Attributs (Attribute mit zwei führenden Unterstrichen) manuell gemangelt werden, um ihn mit
setattr()zu setzen.
- class slice(stop, /)¶
- class slice(start, stop, step=None, /)
Gibt ein Slice-Objekt zurück, das die durch
range(start, stop, step)angegebenen Indizes repräsentiert. Die Argumente start und step haben standardmäßigNone.Slice-Objekte haben schreibgeschützte Datenattribute
start,stopundstep, die lediglich die Argumentwerte (oder ihre Standardwerte) zurückgeben. Sie haben keine weitere explizite Funktionalität; sie werden jedoch von NumPy und anderen Drittanbieterpaketen verwendet.- start¶
- stop¶
- step¶
Slice-Objekte werden auch bei Verwendung der erweiterten Indexierungssyntax generiert. Zum Beispiel:
a[start:stop:step]odera[start:stop, i]. Eine alternative Version, die einen Iterator zurückgibt, finden Sie unteritertools.islice().
- sorted(iterable, /, *, key=None, reverse=False)¶
Gibt eine neue sortierte Liste aus den Elementen von iterable zurück.
Hat zwei optionale Argumente, die als Schlüsselwortargumente angegeben werden müssen.
key gibt eine Funktion mit einem Argument an, die zum Extrahieren eines Vergleichsschlüssels aus jedem Element in iterable verwendet wird (z. B.
key=str.lower). Der Standardwert istNone(vergleicht die Elemente direkt).reverse ist ein boolescher Wert. Wenn auf
Truegesetzt, werden die Listenelemente sortiert, als ob jeder Vergleich umgekehrt wäre.Verwenden Sie
functools.cmp_to_key(), um eine alte cmp-Funktion in eine key-Funktion umzuwandeln.Die eingebaute Funktion
sorted()ist garantiert stabil. Eine Sortierung ist stabil, wenn sie garantiert, die relative Reihenfolge von Elementen, die gleich verglichen werden, nicht zu ändern – dies ist hilfreich für mehrfache Sortierdurchgänge (z. B. Sortierung nach Abteilung, dann nach Gehaltsklasse).Der Sortieralgorithmus verwendet nur
<-Vergleiche zwischen Elementen. Während die Definition einer__lt__()-Methode für die Sortierung ausreicht, empfiehlt PEP 8, alle sechs Rich-Vergleiche zu implementieren. Dies hilft, Fehler zu vermeiden, wenn dieselben Daten mit anderen Sortierwerkzeugen wiemax()verwendet werden, die auf einer anderen zugrunde liegenden Methode basieren. Die Implementierung aller sechs Vergleiche hilft auch, Verwirrung bei gemischten Typvergleichen zu vermeiden, die die reflektierte__gt__()-Methode aufrufen können.Für Sortierbeispiele und eine kurze Sortieranleitung siehe Sortiertechniken.
- @staticmethod¶
Wandelt eine Methode in eine statische Methode um.
Eine statische Methode erhält kein implizites erstes Argument. Um eine statische Methode zu deklarieren, verwenden Sie dieses Idiom
class C: @staticmethod def f(arg1, arg2, argN): ...
Die Form
@staticmethodist ein Funktions-Decorator – weitere Details finden Sie unter Funktionsdefinitionen.Eine statische Methode kann sowohl auf der Klasse (z. B.
C.f()) als auch auf einer Instanz (z. B.C().f()) aufgerufen werden. Darüber hinaus ist der statische Methoden-Deskriptor ebenfalls aufrufbar, sodass er in der Klassendefinition verwendet werden kann (z. B.f()).Statische Methoden in Python ähneln denen in Java oder C++. Weitere Informationen finden Sie auch unter
classmethod()für eine Variante, die nützlich ist, um alternative Klassenkonstruktoren zu erstellen.Wie alle Decorators ist es auch möglich,
staticmethodals reguläre Funktion aufzurufen und mit seinem Ergebnis etwas zu tun. Dies ist in einigen Fällen erforderlich, in denen Sie eine Referenz auf eine Funktion aus einem Klassenkörper benötigen und die automatische Transformation in eine Instanzmethode vermeiden möchten. Verwenden Sie in diesen Fällen dieses Idiomdef regular_function(): ... class C: method = staticmethod(regular_function)
Weitere Informationen zu statischen Methoden finden Sie unter Die Standard-Typenhierarchie.
Geändert in Version 3.10: Statische Methoden erben nun Methodenattribute (
__module__,__name__,__qualname__,__doc__und__annotations__), haben ein neues Attribut__wrapped__und sind nun als reguläre Funktionen aufrufbar.
- class str(*, encoding='utf-8', errors='strict')
- class str(object)
- class str(object, encoding, errors='strict')
- class str(object, *, errors)
Gibt eine
str-Version von object zurück. Details finden Sie unterstr().strist die eingebaute Zeichenketten-Klasse. Allgemeine Informationen zu Zeichenketten finden Sie unter Textsequenztyp — str.
- sum(iterable, /, start=0)¶
Summiert start und die Elemente eines iterable von links nach rechts und gibt die Summe zurück. Die Elemente des iterable sind normalerweise Zahlen, und der Startwert darf keine Zeichenkette sein.
Für einige Anwendungsfälle gibt es gute Alternativen zu
sum(). Der bevorzugte, schnelle Weg, eine Sequenz von Zeichenketten zu verketten, ist der Aufruf von''.join(sequence). Um Gleitkommawerte mit erweiterter Genauigkeit zu addieren, siehemath.fsum(). Zum Verketten einer Serie von Iterables sollten Sieitertools.chain()in Betracht ziehen.Geändert in Version 3.8: Der Parameter start kann als Schlüsselwortargument angegeben werden.
Geändert in Version 3.12: Die Summierung von Gleitkommazahlen wurde auf einen Algorithmus umgestellt, der auf den meisten Builds eine höhere Genauigkeit und bessere Kommutativität bietet.
Geändert in Version 3.14: Spezialisierung für die Summierung von Komplexen hinzugefügt, die denselben Algorithmus wie für die Summierung von Gleitkommazahlen verwendet.
- class super¶
- class super(type, object_or_type=None, /)
Gibt ein Proxy-Objekt zurück, das Methodenaufrufe an eine übergeordnete oder gleichrangige Klasse von type delegiert. Dies ist nützlich für den Zugriff auf geerbte Methoden, die in einer Klasse überschrieben wurden.
Das object_or_type bestimmt die zu durchsuchende Methodenauflösungsreihenfolge. Die Suche beginnt bei der Klasse direkt nach type.
Wenn beispielsweise die
__mro__von object_or_typeD -> B -> C -> A -> objectist und der Wert von typeBist, durchsuchtsuper()C -> A -> object.Das Attribut
__mro__der Klasse, die object_or_type entspricht, listet die Suchreihenfolge für die Methodenauflösung auf, die sowohl vongetattr()als auch vonsuper()verwendet wird. Das Attribut ist dynamisch und kann sich ändern, wenn sich die Vererbungshierarchie aktualisiert.Wenn das zweite Argument weggelassen wird, ist das zurückgegebene Superobjekt ungebunden. Wenn das zweite Argument ein Objekt ist, muss
isinstance(obj, type)wahr sein. Wenn das zweite Argument ein Typ ist, mussissubclass(type2, type)wahr sein (dies ist nützlich für Class-Methoden).Wenn es direkt innerhalb einer normalen Methode einer Klasse aufgerufen wird, können beide Argumente weggelassen werden ("null-Argument-Aufruf" von
super()). In diesem Fall ist type die umschließende Klasse und obj das erste Argument der unmittelbar umschließenden Funktion (typischerweiseself). (Dies bedeutet, dass ein null-Argument-Aufruf vonsuper()innerhalb von verschachtelten Funktionen, einschließlich Generatorausdrücken, die implizit verschachtelte Funktionen erstellen, nicht wie erwartet funktioniert.)Es gibt zwei typische Anwendungsfälle für super. In einer Klassenvererbung mit einfacher Vererbung kann super verwendet werden, um auf übergeordnete Klassen zu verweisen, ohne diese explizit zu benennen, wodurch der Code wartbarer wird. Diese Verwendung ähnelt stark der Verwendung von super in anderen Programmiersprachen.
Der zweite Anwendungsfall ist die Unterstützung kooperativer Mehrfachvererbung in einer dynamischen Ausführungsumgebung. Dieser Anwendungsfall ist einzigartig für Python und kommt in statisch kompilierten Sprachen oder Sprachen, die nur einfache Vererbung unterstützen, nicht vor. Dies ermöglicht die Implementierung von "Diamantdiagrammen", bei denen mehrere Basisklassen dieselbe Methode implementieren. Gutes Design schreibt vor, dass solche Implementierungen in jedem Fall die gleiche Aufrufsignatur haben (da die Reihenfolge der Aufrufe zur Laufzeit bestimmt wird, da sich diese Reihenfolge an Änderungen in der Klassenhierarchie anpasst und da diese Reihenfolge gleichrangige Klassen enthalten kann, die vor der Laufzeit unbekannt sind).
Für beide Anwendungsfälle sieht ein typischer Superklassenaufruf wie folgt aus
class C(B): def method(self, arg): super().method(arg) # This does the same thing as: # super(C, self).method(arg)
Zusätzlich zu Methoden-Lookups funktioniert
super()auch für Attribut-Lookups. Ein möglicher Anwendungsfall hierfür ist der Aufruf von Deskriptoren in einer übergeordneten oder gleichrangigen Klasse.Beachten Sie, dass
super()als Teil des Bindungsprozesses für explizite gepunktete Attribut-Lookups wiesuper().__getitem__(name)implementiert ist. Dies geschieht durch die Implementierung einer eigenen Methode__getattribute__()zum Durchsuchen von Klassen in einer vorhersagbaren Reihenfolge, die kooperativer Mehrfachvererbung unterstützt. Dementsprechend istsuper()für implizite Lookups über Anweisungen oder Operatoren wiesuper()[name]nicht definiert.Beachten Sie auch, dass
super(), abgesehen von der Null-Argument-Form, nicht auf die Verwendung innerhalb von Methoden beschränkt ist. Die Zwei-Argument-Form gibt die Argumente exakt an und stellt die entsprechenden Verweise her. Die Null-Argument-Form funktioniert nur innerhalb einer Klassendefinition, da der Compiler die notwendigen Details einfügt, um die definierte Klasse korrekt abzurufen und die aktuelle Instanz für normale Methoden zugänglich zu machen.Praktische Vorschläge zur Gestaltung kooperativer Klassen mit
super()finden Sie im Leitfaden zur Verwendung von super().
- class tuple(iterable=(), /)
tupleist eher ein unveränderlicher Sequenztyp als eine Funktion, wie in Tupel und Sequenztypen — list, tuple, range dokumentiert.
- class type(object, /)¶
- class type(name, bases, dict, /, **kwargs)
Mit einem Argument wird der Typ eines objects zurückgegeben. Der Rückgabewert ist ein Typobjekt und im Allgemeinen dasselbe Objekt wie das von
object.__class__zurückgegebene.Die eingebaute Funktion
isinstance()wird für die Überprüfung des Typs eines Objekts empfohlen, da sie Unterklassen berücksichtigt.Mit drei Argumenten wird ein neues Typobjekt zurückgegeben. Dies ist im Wesentlichen eine dynamische Form der
class-Anweisung. Der name-String ist der Klassenname und wird zum Attribut__name__. Das bases-Tupel enthält die Basisklassen und wird zum Attribut__bases__; wenn es leer ist, wirdobject, die ultimative Basis aller Klassen, hinzugefügt. Das dict-Wörterbuch enthält Attribut- und Methodendefinitionen für den Klassenkörper; es kann kopiert oder umhüllt werden, bevor es zum Attribut__dict__wird. Die folgenden beiden Anweisungen erstellen identischetype-Objekte>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))
Siehe auch
Schlüsselwortargumente, die der Drei-Argument-Form übergeben werden, werden auf die entsprechende Metaklassen-Maschinerie (normalerweise
__init_subclass__()) übergeben, ähnlich wie Schlüsselwörter in einer Klassendefinition (außer metaclass).Siehe auch Anpassen der Klassenerstellung.
Geändert in Version 3.6: Unterklassen von
type, dietype.__new__nicht überschreiben, dürfen das Ein-Argument-Formular nicht mehr verwenden, um den Typ eines Objekts zu erhalten.
- vars()¶
- vars(object, /)
Gibt das Attribut
__dict__für ein Modul, eine Klasse, eine Instanz oder ein beliebiges anderes Objekt mit einem__dict__-Attribut zurück.Objekte wie Module und Instanzen haben ein aktualisierbares Attribut
__dict__; andere Objekte können jedoch Schreibbeschränkungen für ihre__dict__-Attribute haben (z. B. verwenden Klassentypes.MappingProxyType, um direkte Wörterbuchaktualisierungen zu verhindern).Ohne Argument verhält sich
vars()wielocals().Eine
TypeError-Ausnahme wird ausgelöst, wenn ein Objekt angegeben wird, es aber kein__dict__-Attribut hat (z. B. wenn seine Klasse das Attribut__slots__definiert).Geändert in Version 3.13: Das Ergebnis des Aufrufs dieser Funktion ohne Argument wurde aktualisiert, wie für die eingebaute Funktion
locals()beschrieben.
- zip(*iterables, strict=False)¶
Iteriert parallel über mehrere Iterierbare und erzeugt Tupel mit einem Element aus jedem.
Beispiel
>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']): ... print(item) ... (1, 'sugar') (2, 'spice') (3, 'everything nice')
Formeller ausgedrückt:
zip()gibt einen Iterator von Tupeln zurück, wobei das i-te Tupel das i-te Element aus jedem der Argument-Iterierbaren enthält.Eine andere Art,
zip()zu betrachten, ist, dass es Zeilen in Spalten und Spalten in Zeilen umwandelt. Dies ähnelt dem Transponieren einer Matrix.zip()ist lazy: Die Elemente werden erst verarbeitet, wenn über den Iterator iteriert wird, z. B. in einerfor-Schleife oder durch Umhüllung in einerlist.Eine zu berücksichtigende Sache ist, dass die an
zip()übergebenen Iterierbaren unterschiedliche Längen haben könnten; manchmal mit Absicht und manchmal aufgrund eines Fehlers im Code, der diese Iterierbaren vorbereitet hat. Python bietet drei verschiedene Ansätze, um mit diesem Problem umzugehenStandardmäßig stoppt
zip(), wenn der kürzeste Iterator erschöpft ist. Er ignoriert die verbleibenden Elemente in den längeren Iterierbaren und kürzt das Ergebnis auf die Länge des kürzesten Iterierbaren.>>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'])) [(0, 'fee'), (1, 'fi'), (2, 'fo')]
zip()wird oft in Fällen verwendet, in denen angenommen wird, dass die Iterierbaren die gleiche Länge haben. In solchen Fällen wird empfohlen, die Optionstrict=Truezu verwenden. Die Ausgabe ist dieselbe wie bei reguläremzip()>>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2), ('c', 3)]
Im Gegensatz zum Standardverhalten löst es einen
ValueErroraus, wenn ein Iterator vor den anderen erschöpft ist.>>> 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
Ohne das Argument
strict=Truewird jeder Fehler, der zu Iterierbaren unterschiedlicher Längen führt, unterdrückt und könnte als schwer zu findender Fehler an anderer Stelle im Programm auftreten.Kürzere Iterierbare können mit einem konstanten Wert aufgefüllt werden, um alle Iterierbaren auf die gleiche Länge zu bringen. Dies geschieht durch
itertools.zip_longest().
Sonderfälle: Mit einem einzigen Iterable-Argument gibt
zip()einen Iterator von 1-Tupeln zurück. Ohne Argumente gibt er einen leeren Iterator zurück.Tipps und Tricks
Die von links nach rechts gerichtete Auswertungsreihenfolge der Iterierbaren ist garantiert. Dies ermöglicht ein Idiom zum Gruppieren einer Datenreihe in Gruppen der Länge n mit
zip(*[iter(s)]*n, strict=True). Dies wiederholt denselben IteratornMal, sodass jedes Ausgabe-Tupel das Ergebnis vonnAufrufen des Iterators enthält. Dies hat den Effekt, die Eingabe in n-lange Blöcke zu unterteilen.zip()kann in Verbindung mit dem Operator*verwendet werden, um eine Liste zu entpacken>>> 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
Geändert in Version 3.10: Das Argument
strictwurde hinzugefügt.
- __import__(name, globals=None, locals=None, fromlist=(), level=0)¶
Hinweis
Dies ist eine fortgeschrittene Funktion, die bei der alltäglichen Python-Programmierung nicht benötigt wird, im Gegensatz zu
importlib.import_module().Diese Funktion wird von der
import-Anweisung aufgerufen. Sie kann ersetzt werden (durch Importieren des Modulsbuiltinsund Zuweisung zubuiltins.__import__), um die Semantik derimport-Anweisung zu ändern. Dies wird jedoch **dringend** abgeraten, da es normalerweise einfacher ist, Import-Hooks (siehe PEP 302) zu verwenden, um dieselben Ziele zu erreichen, und keine Probleme mit Code verursacht, der die Standard-Importimplementierung annimmt. Die direkte Verwendung von__import__()wird ebenfalls zugunsten vonimportlib.import_module()abgeraten.Die Funktion importiert das Modul name und verwendet möglicherweise die angegebenen globals und locals, um zu bestimmen, wie der Name in einem Paketkontext interpretiert werden soll. fromlist gibt die Namen von Objekten oder Untermodulen an, die aus dem von name angegebenen Modul importiert werden sollen. Die Standardimplementierung verwendet ihr locals-Argument überhaupt nicht und verwendet ihr globals nur, um den Paketkontext der
import-Anweisung zu bestimmen.level gibt an, ob absolute oder relative Imports verwendet werden sollen.
0(Standard) bedeutet, dass nur absolute Imports durchgeführt werden. Positive Werte für level geben die Anzahl der übergeordneten Verzeichnisse an, die relativ zum Verzeichnis des Moduls, das__import__()aufruft, durchsucht werden sollen (siehe PEP 328 für Details).Wenn die Variable name die Form
package.modulehat, wird normalerweise das Top-Level-Paket (der Name bis zum ersten Punkt) zurückgegeben, nicht das durch name benannte Modul. Wenn jedoch ein nicht leeres fromlist-Argument angegeben wird, wird das durch name benannte Modul zurückgegeben.Zum Beispiel führt die Anweisung
import spamzu Bytecode, der dem folgenden Code ähneltspam = __import__('spam', globals(), locals(), [], 0)
Die Anweisung
import spam.hamführt zu diesem Aufrufspam = __import__('spam.ham', globals(), locals(), [], 0)
Beachten Sie, wie
__import__()hier das Top-Level-Modul zurückgibt, da dies das Objekt ist, das durch dieimport-Anweisung an einen Namen gebunden wird.Andererseits führt die Anweisung
from spam.ham import eggs, sausage as sauszu_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausage
Hier wird das Modul
spam.hamvon__import__()zurückgegeben. Von diesem Objekt aus werden die zu importierenden Namen abgerufen und ihren jeweiligen Namen zugewiesen.Wenn Sie einfach ein Modul (möglicherweise innerhalb eines Pakets) anhand seines Namens importieren möchten, verwenden Sie
importlib.import_module().Geändert in Version 3.3: Negative Werte für level werden nicht mehr unterstützt (was auch den Standardwert auf 0 ändert).
Geändert in Version 3.9: Wenn die Kommandozeilenoptionen
-Eoder-Iverwendet werden, wird die UmgebungsvariablePYTHONCASEOKnun ignoriert.
Fußnoten