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() hat aiter() keine Variante mit 2 Argumenten.

Hinzugefügt in Version 3.10.

all(iterable, /)

Gibt True zurück, wenn alle Elemente des iterables wahr sind (oder wenn das Iterable leer ist). Entspricht

def 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 wird StopAsyncIteration ausgelöst.

Hinzugefügt in Version 3.10.

any(iterable, /)

Gibt True zurück, wenn irgendein Element des iterables wahr ist. Wenn das Iterable leer ist, wird False zurückgegeben. Entspricht

def 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 von repr() zurückgegebenen String unter Verwendung von \x-, \u- oder \U-Escapes maskiert. Dies erzeugt einen String, der dem von repr() 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 True oder False. Das Argument wird mithilfe des Standard-Verfahrens zur Wahrheitsprüfung konvertiert. Wenn das Argument falsch ist oder weggelassen wird, wird False zurückgegeben; andernfalls wird True zurückgegeben. Die Klasse bool ist eine Unterklasse von int (siehe Numerische Typen — int, float, complex). Sie kann nicht weiter unterklassifiziert werden. Ihre einzigen Instanzen sind False und True (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 leitet args und kws direkt weiter. Standardmäßig ruft sys.breakpointhook() pdb.set_trace() auf und erwartet keine Argumente. In diesem Fall ist es rein eine Komfortfunktion, damit Sie pdb nicht explizit importieren oder mehr Code eingeben müssen, um in den Debugger zu gelangen. Jedoch kann sys.breakpointhook() auf eine andere Funktion gesetzt werden, und breakpoint() ruft diese dann automatisch auf, sodass Sie in den Debugger Ihrer Wahl springen können. Wenn sys.breakpointhook() nicht zugänglich ist, löst diese Funktion RuntimeError aus.

Standardmäßig kann das Verhalten von breakpoint() mit der Umgebungsvariable PYTHONBREAKPOINT geändert werden. Einzelheiten zur Verwendung finden Sie in sys.breakpointhook().

Beachten Sie, dass dies nicht garantiert ist, wenn sys.breakpointhook() ersetzt wurde.

Löst ein Audit-Ereignis builtins.breakpoint mit dem Argument breakpointhook aus.

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 bytearray ist 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 Typ bytes hat, 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 mit str.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 < 256 sein, 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 < 256 darstellt. bytes ist eine unveränderliche Version von bytearray – 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 True zurück, wenn das Argument object aufrufbar erscheint, False andernfalls. Wenn dies True zurückgibt, ist es immer noch möglich, dass ein Aufruf fehlschlägt, aber wenn es False zurü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ährend chr(8364) die Zeichenkette '€' zurückgibt. Dies ist die Umkehrung von ord().

Der gültige Bereich für das Argument ist von 0 bis 1.114.111 (0x10FFFF in Basis 16). ValueError wird 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 @classmethod ist 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() oder eval() 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 des ast-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 als None ausgewertet 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_flag in der Instanz _Feature im Modul __future__. Compiler-Flags finden sich im Modul ast, mit dem Präfix PyCF_.

Das Argument optimize gibt die Optimierungsstufe des Compilers an; der Standardwert von -1 wählt die Optimierungsstufe des Interpreters, wie sie durch die -O-Optionen gegeben ist. Explizite Stufen sind 0 (keine Optimierung; __debug__ ist wahr), 1 (asserts werden entfernt, __debug__ ist falsch) oder 2 (docstrings werden ebenfalls entfernt).

Diese Funktion löst SyntaxError aus, wenn der kompilierte Quellcode ungültig ist, und ValueError, 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 compile mit den Argumenten source und filename aus. 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 Modul code.

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 TypeError ausgelöst, wenn Null-Bytes in source angetroffen wurden.

Hinzugefügt in Version 3.8: ast.PyCF_ALLOW_TOP_LEVEL_AWAIT kann nun als Flag übergeben werden, um die Unterstützung für Top-Level await, async for und async with zu 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 ist complex('1+2j') gültig, aber complex('1 + 2j') löst einen ValueError aus. Genauer gesagt, die Eingabe muss der Produktionsregel complexvalue in der folgenden Grammatik entsprechen, nachdem Klammern und führende sowie abschließende Leerzeichen entfernt wurden.

complexvalue: floatvalue |
              floatvalue ("j" | "J") |
              floatvalue sign absfloatvalue ("j" | "J")

Wenn das Argument eine Zahl ist, fungiert der Konstruktor als numerische Konvertierung wie int und float. Für ein allgemeines Python-Objekt x delegiert complex(x) an x.__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.imag und der imaginären Komponente real.imag+imag.real zurü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 0j zurü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 ist delattr(x, 'foobar') äquivalent zu del x.foobar. name muss kein Python-Bezeichner sein (siehe setattr()).

class dict(**kwargs)
class dict(mapping, /, **kwargs)
class dict(iterable, /, **kwargs)

Erstellt ein neues Dictionary. Das Objekt dict ist die Dictionary-Klasse. Siehe dict und Mapping-Typen — dict für Dokumentationen zu dieser Klasse.

Andere Container sind die eingebauten Klassen list, set und tuple sowie das Modul collections.

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, wie dir() 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 normalerweise math.floor(a / b) ist, aber um 1 kleiner sein kann. In jedem Fall ist q * b + a % b sehr nahe an a. Wenn a % b nicht null ist, hat es das gleiche Vorzeichen wie b, und 0 <= 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 von enumerate() 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 Moduls builtins unter 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 an eval() ü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 der eval() aufgerufen wird. Beachten Sie, dass eval() nur dann Zugriff auf die verschachtelten Gültigkeitsbereiche (Nicht-Lokale) in der umgebenden Umgebung hat, wenn diese bereits im Gültigkeitsbereich referenziert sind, der eval() aufruft (z. B. über eine nonlocal-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 von eval() None.

Hinweise: Die dynamische Ausführung von Anweisungen wird durch die Funktion exec() unterstützt. Die Funktionen globals() und locals() geben das aktuelle globale und lokale Dictionary zurück, was nützlich sein kann, um sie für die Verwendung durch eval() oder exec() 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 exec mit 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, yield und return außerhalb von Funktionsdefinitionen, selbst im Kontext von Code, der an die Funktion exec() übergeben wird, nicht verwendet werden dürfen. Der Rückgabewert ist None.

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 exec zwei 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 Moduls builtins unter 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 an exec() ü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_freevars des Code-Objekts entsprechen.

Löst ein Audit-Ereignis exec mit dem Code-Objekt als Argument aus. Möglicherweise werden auch Code-Kompilierungsereignisse ausgelöst.

Hinweis

Die eingebauten Funktionen globals() und locals() geben den aktuellen globalen und lokalen Namensraum zurück, was nützlich sein kann, um sie als zweites und drittes Argument für exec() 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 Funktion exec() 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 None ist, 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 nicht None ist, und (item for item in iterable if item), wenn Funktion None ist.

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 Produktionsregel floatvalue in 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] digitpart
floatnumber:   number [exponent]
absfloatvalue: floatnumber | infinity | nan
floatvalue:    [sign] absfloatvalue

Die 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 OverflowError ausgelöst.

Für ein allgemeines Python-Objekt x delegiert float(x) an x.__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.0 zurü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 in type(wert).__format__(wert, format_spec), was das Instanzwörterbuch bei der Suche nach der __format__()-Methode des Werts umgeht. Eine TypeError-Ausnahme wird ausgelöst, wenn die Methodensuche object erreicht 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öst TypeError aus, wenn format_spec keine leere Zeichenkette ist.

class frozenset(iterable=(), /)

Gibt ein neues frozenset-Objekt zurück, optional mit Elementen aus iterable. frozenset ist eine eingebaute Klasse. Siehe frozenset und Set Types — set, frozenset für Dokumentation zu dieser Klasse.

Für andere Container siehe die eingebauten Klassen set, list, tuple und dict sowie das Modul collections.

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 zu x.foobar. Wenn das benannte Attribut nicht existiert, wird standardwert zurückgegeben, wenn dieser angegeben ist, andernfalls wird eine AttributeError ausgelöst. name muss kein Python-Bezeichner sein (siehe setattr()).

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, indem getattr(objekt, name) aufgerufen und geprüft wird, ob eine AttributeError ausgelö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, dass hash() 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 site in den integrierten Namensraum eingefügt.

Geändert in Version 3.4: Änderungen an pydoc und inspect bedeuten, dass die gemeldeten Signaturen für aufrufbare Objekte jetzt umfassender und konsistenter sind.

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.id mit dem Argument id aus.

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 EOFError ausgelöst. Beispiel

>>> s = input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"

Wenn das Modul readline geladen wurde, verwendet input() es, um aufwendige Zeilenbearbeitungs- und Verlaufsfunktionen bereitzustellen.

Löst ein Audit-Ereignis builtins.input mit dem Argument prompt aus, bevor die Eingabe gelesen wird.

Löst ein Audit-Ereignis builtins.input/result mit 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 0 zurü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, gibt int(x) x.__int__() zurück. Wenn das Argument __index__() definiert, gibt es x.__index__() zurück. Bei Gleitkommazahlen wird hierbei gegen Null abgerundet.

Wenn das Argument keine Zahl ist oder Basis angegeben ist, muss es eine Zeichenkette, bytes oder bytearray-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 a bis z (oder A bis Z) dargestellt werden. Die Standardbasis ist 10. Die zulässigen Basen sind 0 und 2-36. Basis-2, -8 und -16 Zeichenketten können optional mit 0b/0B, 0o/0O oder 0x/0X prä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ährend int('010') und int('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 int ist und das basis-Objekt eine base.__index__-Methode hat, wird diese Methode aufgerufen, um eine Ganzzahl für die Basis zu erhalten. Frühere Versionen verwendeten base.__int__ anstelle von base.__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. Eine ValueError wird ausgelöst, wenn das Limit beim Konvertieren einer Zeichenkette in eine int überschritten wird oder wenn das Konvertieren einer int in 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 True zurü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 immer False zurück. Wenn klasseinfo ein Tupel von Typobjekten ist (oder rekursiv, andere solche Tupel) oder ein Union Type mehrerer Typen, gibt sie True zurück, wenn objekt eine Instanz eines der Typen ist. Wenn klasseinfo kein Typ oder Tupel von Typen und solchen Tupeln ist, wird eine TypeError-Ausnahme ausgelöst. TypeError wird 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 True zurü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 sie True zurück, wenn klasse eine Unterklasse eines Eintrags in klasseinfo ist. In allen anderen Fällen wird eine TypeError-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 bei 0). Wenn keines dieser Protokolle unterstützt wird, wird eine TypeError ausgelö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, wird StopIteration ausgelö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 Dateiendes

from 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: len löst OverflowError bei Längen größer als sys.maxsize aus, wie z.B. range(2 ** 100).

class list(iterable=(), /)

Anstatt eine Funktion zu sein, ist list tatsä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() oder eval() mit einem einzelnen Namensraum gibt diese Funktion denselben Namensraum wie globals() zurück.

Auf Klassenebene gibt es den Namensraum zurück, der an den Konstruktor der Metaklasse übergeben wird.

Bei Verwendung von exec() oder eval() 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 von locals() 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 True gesetzt ist und eines der Iterables vor den anderen erschöpft ist, wird ein ValueError ausgelöst. Für Fälle, in denen die Funktionsargumente bereits in Tupeln angeordnet sind, siehe itertools.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 ein ValueError ausgelö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] und heapq.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 None sein.

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 ein ValueError ausgelö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] und heapq.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 None sein.

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 wird StopIteration ausgelö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.

Hinweis

object-Instanzen haben *keine* __dict__-Attribute, daher können Sie einer Instanz von object keine beliebigen Attribute zuweisen.

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 OSError ausgelö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 False gesetzt.)

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 sind

Zeichen

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 als bytes-Objekte ohne Dekodierung zurück. Im Textmodus (Standard oder wenn 't' im mode-Argument enthalten ist) werden die Inhalte der Datei als str zurü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 mit mode='r+' geöffnet wurden) eine andere Pufferung hätte. Um die Pufferung in TextIOWrapper zu deaktivieren, sollten Sie die Option write_through für io.TextIOWrapper.reconfigure() in Betracht ziehen. Wenn kein buffering-Argument angegeben wird, verhält sich die Standardpufferungsrichtlinie wie folgt

  • Binä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() True zurü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 Modul codecs fü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 einer ValueError-Ausnahme, wenn ein Kodierungsfehler auftritt. Der Standardwert von None hat 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 Fehlerbehandler surrogateescape beim 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 None ist, 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 None ist, werden alle geschriebenen '\n'-Zeichen in den systemweiten Zeilentrenner os.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 False ist 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 closefd True (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.open als opener ergibt eine Funktionalität, die der Übergabe von None ä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. Wenn open() zum Öffnen einer Datei im Textmodus verwendet wird ('w', 'r', 'wt', 'rt' usw.), gibt es eine Unterklasse von io.TextIOBase zurück (speziell io.TextIOWrapper). Wenn es zum Öffnen einer Datei im Binärmodus mit Pufferung verwendet wird, ist die zurückgegebene Klasse eine Unterklasse von io.BufferedIOBase. Die genaue Klasse variiert: im Lesemodus gibt es io.BufferedReader zurück; im Schreib- und Anhängemodus gibt es io.BufferedWriter zurück, und im Lese-/Schreibmodus gibt es io.BufferedRandom zurück. Wenn die Pufferung deaktiviert ist, wird der rohe Stream, eine Unterklasse von io.RawIOBase, io.FileIO, zurückgegeben.

Siehe auch die Dateibehandlungsmodule wie fileinput, io (wo open() deklariert ist), os, os.path, tempfile und shutil.

Löst ein Auditing-Ereignis open mit den Argumenten path, mode, flags aus.

Die Argumente mode und flags wurden 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.

  • IOError wurde früher ausgelöst, jetzt ist er ein Alias für OSError.

  • FileExistsError wird 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.PathLike implementieren, wurde hinzugefügt.

  • Unter Windows kann das Öffnen eines Konsolenpuffers eine Unterklasse von io.RawIOBase zurückgeben, die sich von io.FileIO unterscheidet.

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 Ganzzahl 97 zurück und ord('€') (Eurozeichen) gibt 8364 zurück. Dies ist die Umkehrung von chr().

Wenn das Argument ein bytes- oder bytearray-Objekt der Länge 1 ist, gibt es dessen einzelnen Byte-Wert zurück. Zum Beispiel gibt ord(b'a') die Ganzzahl 97 zurü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-Form pow(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 gibt pow(10, 2) 100 zurück, aber pow(10, -2) gibt 0.01 zurück. Für eine negative Basis vom Typ int oder float und einen nicht-ganzzahligen Exponenten wird ein komplexes Ergebnis geliefert. Zum Beispiel liefert pow(-9, 0.5) einen Wert nahe 3j. Während für eine negative Basis vom Typ int oder float mit einem ganzzahligen Exponenten ein Float-Ergebnis geliefert wird. Zum Beispiel gibt pow(-9, 2.0) 81.0 zurü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 wird pow(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 38 modulo 97

>>> 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 von pow nun, 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 auch None sein, was bedeutet, dass die Standardwerte verwendet werden. Wenn keine objects angegeben werden, schreibt print() nur end.

Das file-Argument muss ein Objekt mit einer write(string)-Methode sein; wenn diese nicht vorhanden oder None ist, wird sys.stdout verwendet. Da gedruckte Argumente in Textzeichenketten umgewandelt werden, kann print() nicht mit Binärdateiobjekten verwendet werden. Verwenden Sie stattdessen file.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 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.")

Wenn c eine Instanz von C ist, ruft c.x den Getter auf, c.x = value ruft den Setter auf und del c.x ruft 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 Decorator

class Parrot:
    def __init__(self):
        self._voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

Der @property-Decorator wandelt die Methode voltage() 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, setter und deleter, 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ärt

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

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, fset und fdel, 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 range tatsä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. Wenn sys.displayhook() nicht zugänglich ist, löst diese Funktion RuntimeError aus.

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

round(number, ndigits=None)

Gibt number gerundet auf ndigits Dezimalstellen zurück. Wenn ndigits weggelassen wird oder None ist, 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 sowohl round(0.5) als auch round(-0.5) 0 und round(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 oder None ist. Andernfalls hat der Rückgabewert denselben Typ wie number.

Für ein allgemeines Python-Objekt number delegiert round an number.__round__.

Hinweis

Das Verhalten von round() für Gleitkommazahlen kann überraschend sein: Zum Beispiel ergibt round(2.675, 2) 2.67 anstelle des erwarteten 2.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. set ist eine eingebaute Klasse. Dokumentation zu dieser Klasse finden Sie unter set und Mengen-Typen — set, frozenset.

Andere Container finden Sie in den integrierten Klassen frozenset, list, tuple und dict sowie im Modul collections.

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 ist setattr(x, 'foobar', 123) äquivalent zu x.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 über getattr() 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äßig None.

Slice-Objekte haben schreibgeschützte Datenattribute start, stop und step, 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] oder a[start:stop, i]. Eine alternative Version, die einen Iterator zurückgibt, finden Sie unter itertools.islice().

Geändert in Version 3.12: Slice-Objekte sind jetzt hashbar (sofern start, stop und step hashbar sind).

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 ist None (vergleicht die Elemente direkt).

reverse ist ein boolescher Wert. Wenn auf True gesetzt, 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 wie max() 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 @staticmethod ist 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, staticmethod als 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 Idiom

def 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 unter str().

str ist 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, siehe math.fsum(). Zum Verketten einer Serie von Iterables sollten Sie itertools.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_type D -> B -> C -> A -> object ist und der Wert von type B ist, durchsucht super() C -> A -> object.

Das Attribut __mro__ der Klasse, die object_or_type entspricht, listet die Suchreihenfolge für die Methodenauflösung auf, die sowohl von getattr() als auch von super() 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, muss issubclass(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 (typischerweise self). (Dies bedeutet, dass ein null-Argument-Aufruf von super() 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 wie super().__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 ist super() für implizite Lookups über Anweisungen oder Operatoren wie super()[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().

Geändert in Version 3.14: super-Objekte sind jetzt pickelbar und kopierbar.

class tuple(iterable=(), /)

tuple ist 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, wird object, 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 identische type-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, die type.__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 Klassen types.MappingProxyType, um direkte Wörterbuchaktualisierungen zu verhindern).

Ohne Argument verhält sich vars() wie locals().

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 einer for-Schleife oder durch Umhüllung in einer list.

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 umzugehen

  • Standardmäß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 Option strict=True zu verwenden. Die Ausgabe ist dieselbe wie bei regulärem zip()

    >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True))
    [('a', 1), ('b', 2), ('c', 3)]
    

    Im Gegensatz zum Standardverhalten löst es einen ValueError aus, 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=True wird 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 Iterator n Mal, sodass jedes Ausgabe-Tupel das Ergebnis von n Aufrufen 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 strict wurde 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 Moduls builtins und Zuweisung zu builtins.__import__), um die Semantik der import-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 von importlib.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.module hat, 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 spam zu Bytecode, der dem folgenden Code ähnelt

spam = __import__('spam', globals(), locals(), [], 0)

Die Anweisung import spam.ham führt zu diesem Aufruf

spam = __import__('spam.ham', globals(), locals(), [], 0)

Beachten Sie, wie __import__() hier das Top-Level-Modul zurückgibt, da dies das Objekt ist, das durch die import-Anweisung an einen Namen gebunden wird.

Andererseits führt die Anweisung from spam.ham import eggs, sausage as saus zu

_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)
eggs = _temp.eggs
saus = _temp.sausage

Hier wird das Modul spam.ham von __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 -E oder -I verwendet werden, wird die Umgebungsvariable PYTHONCASEOK nun ignoriert.

Fußnoten