Glossar

>>>

Die Standard-Python-Eingabeaufforderung der interaktiven Shell. Oft gesehen für Codebeispiele, die interaktiv in der Interpreter ausgeführt werden können.

...

Kann sich beziehen auf

  • Die Standard-Python-Eingabeaufforderung der interaktiven Shell beim Eingeben von Code für einen eingerückten Codeblock, wenn innerhalb eines Paares von übereinstimmenden linken und rechten Begrenzern (Klammern, eckige Klammern, geschweifte Klammern oder dreifache Anführungszeichen) oder nach Angabe eines Dekorators.

  • Die Drei-Punkte-Form des Ellipsis-Objekts.

abstrakte Basisklasse

Abstrakte Basisklassen ergänzen Duck-Typing, indem sie eine Möglichkeit bieten, Schnittstellen zu definieren, wenn andere Techniken wie hasattr() umständlich oder subtil falsch wären (zum Beispiel bei magischen Methoden). ABCs führen virtuelle Unterklassen ein, d.h. Klassen, die nicht von einer Klasse erben, aber dennoch von isinstance() und issubclass() erkannt werden; siehe die Dokumentation des Moduls abc. Python kommt mit vielen integrierten ABCs für Datenstrukturen (im Modul collections.abc), Zahlen (im Modul numbers), Streams (im Modul io), Import-Finder und Loader (im Modul importlib.abc). Eigene ABCs können mit dem Modul abc erstellt werden.

annotierte Funktion

Eine Funktion, die aufgerufen werden kann, um die Annotationen eines Objekts abzurufen. Diese Funktion ist als Attribut __annotate__ von Funktionen, Klassen und Modulen zugänglich. Annotierte Funktionen sind eine Teilmenge von Evaluierungsfunktionen.

Annotation

Ein Label, das einer Variablen, einem Klassenattribut oder einem Funktionsparameter oder Rückgabewert zugeordnet ist und das konventionell als Typ-Hinweis verwendet wird.

Annotationen von lokalen Variablen können zur Laufzeit nicht abgerufen werden, aber Annotationen von globalen Variablen, Klassenattributen und Funktionen können durch Aufruf von annotationlib.get_annotations() für Module, Klassen bzw. Funktionen abgerufen werden.

Siehe Variablenannotation, Funktionsannotation, PEP 484, PEP 526 und PEP 649, die diese Funktionalität beschreiben. Siehe auch Best Practices für Annotationen für Best Practices beim Arbeiten mit Annotationen.

Argument

Ein Wert, der beim Aufruf einer Funktion (oder Methode) übergeben wird. Es gibt zwei Arten von Argumenten

  • Keyword-Argument: Ein Argument, dem ein Bezeichner vorangestellt ist (z. B. name=) in einem Funktionsaufruf oder als Wert in einem Wörterbuch übergeben, dem ** vorangestellt ist. Zum Beispiel sind 3 und 5 beide Keyword-Argumente in den folgenden Aufrufen von complex()

    complex(real=3, imag=5)
    complex(**{'real': 3, 'imag': 5})
    
  • Positionsargument: Ein Argument, das kein Keyword-Argument ist. Positionsargumente können am Anfang einer Argumentliste stehen und/oder als Elemente eines Iterierbaren übergeben werden, dem * vorangestellt ist. Zum Beispiel sind 3 und 5 beide Positionsargumente in den folgenden Aufrufen

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

Argumente werden den benannten lokalen Variablen in einem Funktionsrumpf zugewiesen. Die Regeln für diese Zuweisung finden Sie im Abschnitt Aufrufe. Syntaktisch kann jeder Ausdruck zur Darstellung eines Arguments verwendet werden; der ausgewertete Wert wird der lokalen Variablen zugewiesen.

Siehe auch den Glossareintrag Parameter, die FAQ-Frage nach dem Unterschied zwischen Argumenten und Parametern und PEP 362.

asynchrone Kontextmanager

Ein Objekt, das die Umgebung steuert, die in einer async with-Anweisung gesehen wird, indem es die Methoden __aenter__() und __aexit__() definiert. Eingeführt durch PEP 492.

asynchroner Generator

Eine Funktion, die einen asynchronen Generator-Iterator zurückgibt. Sie sieht aus wie eine mit async def definierte Coroutine, außer dass sie yield-Ausdrücke zur Erzeugung einer Reihe von Werten enthält, die in einer async for-Schleife verwendet werden können.

Bezieht sich normalerweise auf eine asynchrone Generatorfunktion, kann aber in einigen Kontexten einen *asynchronen Generator-Iterator* bezeichnen. In Fällen, in denen die beabsichtigte Bedeutung unklar ist, vermeidet die Verwendung der vollständigen Begriffe Mehrdeutigkeiten.

Eine asynchrone Generatorfunktion kann await-Ausdrücke sowie async for- und async with-Anweisungen enthalten.

asynchroner Generator-Iterator

Ein Objekt, das von einer asynchronen Generatorfunktion erzeugt wurde.

Dies ist ein asynchroner Iterator, der bei Aufruf mit der Methode __anext__() ein awaitable Objekt zurückgibt, das den Körper der asynchronen Generatorfunktion bis zum nächsten yield-Ausdruck ausführt.

Jedes yield pausiert die Verarbeitung vorübergehend und merkt sich den Ausführungszustand (einschließlich lokaler Variablen und ausstehender try-Anweisungen). Wenn der *asynchrone Generator-Iterator* mit einem weiteren von __anext__() zurückgegebenen awaitable fortgesetzt wird, nimmt er die Arbeit dort wieder auf, wo er aufgehört hat. Siehe PEP 492 und PEP 525.

asynchrones Iterierbares

Ein Objekt, das in einer async for-Anweisung verwendet werden kann. Muss von seiner __aiter__()-Methode einen asynchronen Iterator zurückgeben. Eingeführt durch PEP 492.

asynchroner Iterator

Ein Objekt, das die Methoden __aiter__() und __anext__() implementiert. __anext__() muss ein awaitable Objekt zurückgeben. async for löst die von der Methode __anext__() eines asynchronen Iterators zurückgegebenen awaitables auf, bis eine Ausnahme StopAsyncIteration ausgelöst wird. Eingeführt durch PEP 492.

angehängter Thread-Zustand

Ein Thread-Zustand, der für den aktuellen Betriebssystem-Thread aktiv ist.

Wenn ein Thread-Zustand angehängt ist, hat der Betriebssystem-Thread Zugriff auf die vollständige Python C-API und kann den Bytecode-Interpreter sicher aufrufen.

Sofern eine Funktion nicht ausdrücklich etwas anderes angibt, führt der Versuch, die C-API ohne angehängten Thread-Zustand aufzurufen, zu einem schwerwiegenden Fehler oder undefiniertem Verhalten. Ein Thread-Zustand kann vom Benutzer explizit über die C-API angehängt und abgelöst werden, oder implizit durch die Laufzeitumgebung, einschließlich während blockierender C-Aufrufe und durch den Bytecode-Interpreter zwischen Aufrufen.

Bei den meisten Python-Builds impliziert ein angehängter Thread-Zustand, dass der Aufrufer die GIL für den aktuellen Interpreter hält, sodass nur ein Betriebssystem-Thread zu einem bestimmten Zeitpunkt einen angehängten Thread-Zustand haben kann. In freigeschalteten Python-Builds können Threads gleichzeitig einen angehängten Thread-Zustand halten, was eine echte Parallelität des Bytecode-Interpreters ermöglicht.

Attribut

Ein Wert, der einem Objekt zugeordnet ist und normalerweise durch Namen über Punktnotation referenziert wird. Wenn ein Objekt *o* beispielsweise ein Attribut *a* hat, wird es als *o.a* referenziert.

Es ist möglich, einem Objekt ein Attribut zu geben, dessen Name kein Bezeichner ist, wie in Namen (Bezeichner und Schlüsselwörter) definiert, zum Beispiel mithilfe von setattr(), wenn das Objekt dies zulässt. Ein solches Attribut ist nicht über eine Punktnotation zugänglich und müsste stattdessen mit getattr() abgerufen werden.

awaitable

Ein Objekt, das in einem await-Ausdruck verwendet werden kann. Kann eine Coroutine oder ein Objekt mit einer Methode __await__() sein. Siehe auch PEP 492.

BDFL

Benevolent Dictator For Life, alias Guido van Rossum, der Schöpfer von Python.

Binärdatei

Ein Datei-Objekt, das in der Lage ist, byteähnliche Objekte zu lesen und zu schreiben. Beispiele für Binärdateien sind Dateien, die im Binärmodus geöffnet sind ('rb', 'wb' oder 'rb+'), sys.stdin.buffer, sys.stdout.buffer und Instanzen von io.BytesIO und gzip.GzipFile.

Siehe auch Textdatei für ein Datei-Objekt, das str-Objekte lesen und schreiben kann.

ausgeliehene Referenz

In Pythons C-API ist eine ausgeliehene Referenz eine Referenz auf ein Objekt, bei der der Code, der das Objekt verwendet, die Referenz nicht besitzt. Sie wird zu einem hängenden Zeiger, wenn das Objekt zerstört wird. Zum Beispiel kann eine Garbage Collection die letzte starke Referenz auf das Objekt entfernen und es somit zerstören.

Das Aufrufen von Py_INCREF() auf die ausgeliehene Referenz wird empfohlen, um sie in-place in eine starke Referenz umzuwandeln, es sei denn, das Objekt kann vor der letzten Verwendung der ausgeliehenen Referenz nicht zerstört werden. Die Funktion Py_NewRef() kann verwendet werden, um eine neue starke Referenz zu erstellen.

byteähnliches Objekt

Ein Objekt, das das Buffer-Protokoll unterstützt und einen C-zusammenhängenden Puffer exportieren kann. Dazu gehören alle Objekte vom Typ bytes, bytearray und array.array sowie viele gängige Objekte vom Typ memoryview. Byteähnliche Objekte können für verschiedene Operationen verwendet werden, die mit Binärdaten arbeiten; dazu gehören Komprimierung, Speichern in einer Binärdatei und Senden über einen Socket.

Einige Operationen erfordern, dass die Binärdaten veränderlich sind. Die Dokumentation bezeichnet diese oft als „lese-/schreibbare byteähnliche Objekte“. Beispiele für veränderliche Pufferobjekte sind bytearray und eine memoryview eines bytearray. Andere Operationen erfordern, dass die Binärdaten in unveränderlichen Objekten gespeichert sind („nur lesbare byteähnliche Objekte“); Beispiele hierfür sind bytes und eine memoryview eines bytes-Objekts.

Bytecode

Python-Quellcode wird in Bytecode kompiliert, die interne Darstellung eines Python-Programms im CPython-Interpreter. Der Bytecode wird auch in .pyc-Dateien zwischengespeichert, damit die Ausführung derselben Datei beim zweiten Mal schneller ist (die Rekompilierung von Quellcode zu Bytecode kann vermieden werden). Diese „Zwischensprache“ wird auf einer virtuellen Maschine ausgeführt, die den Maschinencode ausführt, der jedem Bytecode entspricht. Beachten Sie, dass Bytecodes nicht erwartet werden, zwischen verschiedenen Python-virtuellen Maschinen zu funktionieren, noch stabil zwischen Python-Versionen zu sein.

Eine Liste von Bytecode-Anweisungen finden Sie in der Dokumentation des Moduls dis.

aufrufbar

Ein aufrufbares Objekt ist ein Objekt, das, möglicherweise mit einer Reihe von Argumenten (siehe Argument), mit der folgenden Syntax aufgerufen werden kann

callable(argument1, argument2, argumentN)

Eine Funktion, und im erweiterten Sinne eine Methode, ist aufrufbar. Eine Instanz einer Klasse, die die Methode __call__() implementiert, ist ebenfalls aufrufbar.

Callback

Eine Unterroutine, die als Argument übergeben wird, um zu einem späteren Zeitpunkt ausgeführt zu werden.

Klasse

Eine Vorlage zum Erstellen von benutzerdefinierten Objekten. Klassendefinitionen enthalten normalerweise Methodendefinitionen, die auf Instanzen der Klasse wirken.

Klassenvariable

Eine Variable, die in einer Klasse definiert ist und nur auf Klassenebene geändert werden soll (d. h. nicht in einer Instanz der Klasse).

Closure-Variable

Eine freie Variable, die aus einem verschachtelten Geltungsbereich referenziert wird und in einem äußeren Geltungsbereich definiert ist, anstatt zur Laufzeit aus den globalen oder eingebauten Namensräumen aufgelöst zu werden. Kann mit dem Schlüsselwort nonlocal explizit definiert werden, um Schreibzugriff zu ermöglichen, oder implizit definiert werden, wenn die Variable nur gelesen wird.

Zum Beispiel sind in der Funktion inner im folgenden Code sowohl x als auch print freie Variablen, aber nur x ist eine *Closure-Variable*

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

Aufgrund des Attributs codeobject.co_freevars (das trotz seines Namens nur die Namen von Closure-Variablen enthält, anstatt alle referenzierten freien Variablen aufzulisten), wird der allgemeinere Begriff freie Variable manchmal auch dann verwendet, wenn die beabsichtigte Bedeutung darin besteht, sich speziell auf Closure-Variablen zu beziehen.

komplexe Zahl

Eine Erweiterung des vertrauten reellen Zahlensystems, in dem alle Zahlen als Summe eines Realteils und eines Imaginärteils ausgedrückt werden. Imaginäre Zahlen sind reelle Vielfache der imaginären Einheit (der Quadratwurzel von -1), oft als i in der Mathematik oder als j im Ingenieurwesen bezeichnet. Python verfügt über integrierte Unterstützung für komplexe Zahlen, die mit dieser letzteren Notation geschrieben werden; der Imaginärteil wird mit einem Suffix j geschrieben, z. B. 3+1j. Um Zugriff auf komplexe Entsprechungen des Moduls math zu erhalten, verwenden Sie cmath. Die Verwendung komplexer Zahlen ist ein eher fortgeschrittenes mathematisches Merkmal. Wenn Sie keinen Bedarf dafür erkennen, können Sie sie mit ziemlicher Sicherheit ignorieren.

Kontext

Dieser Begriff hat je nach Ort und Art der Verwendung unterschiedliche Bedeutungen. Einige gängige Bedeutungen

Kontextverwaltungs­protokoll

Die Methoden __enter__() und __exit__(), die von der with-Anweisung aufgerufen werden. Siehe PEP 343.

Kontextmanager

Ein Objekt, das das Kontextverwaltungs­protokoll implementiert und die Umgebung steuert, die in einer with-Anweisung gesehen wird. Siehe PEP 343.

Kontextvariable

Eine Variable, deren Wert davon abhängt, welcher Kontext der aktuelle Kontext ist. Werte werden über contextvars.ContextVar-Objekte abgerufen. Kontextvariablen werden hauptsächlich verwendet, um den Zustand zwischen gleichzeitigen asynchronen Tasks zu isolieren.

zusammenhängend

Ein Puffer gilt als zusammenhängend, wenn er entweder C-zusammenhängend oder Fortran-zusammenhängend ist. Null-dimensionale Puffer sind C- und Fortran-zusammenhängend. Bei eindimensionalen Arrays müssen die Elemente im Speicher nebeneinander liegen, in der Reihenfolge steigender Indizes beginnend bei Null. Bei mehrdimensionalen C-zusammenhängenden Arrays variiert der letzte Index am schnellsten, wenn die Elemente in der Reihenfolge der Speicheradressen besucht werden. Bei Fortran-zusammenhängenden Arrays variiert jedoch der erste Index am schnellsten.

coroutine

Coroutinen sind eine verallgemeinerte Form von Subroutinen. Subroutinen werden an einer Stelle aufgerufen und an einer anderen verlassen. Coroutinen können an vielen verschiedenen Stellen aufgerufen, verlassen und wieder aufgenommen werden. Sie können mit der Anweisung async def implementiert werden. Siehe auch PEP 492.

coroutine function

Eine Funktion, die ein Coroutine-Objekt zurückgibt. Eine Coroutinen-Funktion kann mit der Anweisung async def definiert werden und kann die Schlüsselwörter await, async for und async with enthalten. Diese wurden durch PEP 492 eingeführt.

CPython

Die kanonische Implementierung der Python-Programmiersprache, wie sie auf python.org verteilt wird. Der Begriff "CPython" wird verwendet, wenn er benötigt wird, um diese Implementierung von anderen wie Jython oder IronPython zu unterscheiden.

current context

Der Kontext (contextvars.Context-Objekt), der derzeit von ContextVar-Objekten verwendet wird, um die Werte von Kontextvariablen abzurufen (zu erhalten oder zu setzen). Jeder Thread hat seinen eigenen aktuellen Kontext. Frameworks zur Ausführung asynchroner Aufgaben (siehe asyncio) assoziieren jede Aufgabe mit einem Kontext, der zum aktuellen Kontext wird, wann immer die Aufgabe mit der Ausführung beginnt oder fortgesetzt wird.

cyclic isolate

Eine Untergruppe von einem oder mehreren Objekten, die sich gegenseitig in einem Referenzzyklus referenzieren, aber nicht von Objekten außerhalb der Gruppe referenziert werden. Das Ziel des zyklischen Garbage Collectors ist es, diese Gruppen zu identifizieren und die Referenzzyklen zu durchbrechen, damit der Speicher wieder freigegeben werden kann.

decorator

Eine Funktion, die eine andere Funktion zurückgibt, die normalerweise als Funktionstransformation mit der @wrapper-Syntax angewendet wird. Häufige Beispiele für Decorators sind classmethod() und staticmethod().

Die Decorator-Syntax ist lediglich syntaktischer Zucker, die folgenden beiden Funktionsdefinitionen sind semantisch äquivalent

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

@staticmethod
def f(arg):
    ...

Das gleiche Konzept existiert für Klassen, wird dort aber seltener verwendet. Weitere Informationen zu Decorators finden Sie in der Dokumentation für Funktionsdefinitionen und Klassendefinitionen.

descriptor

Jedes Objekt, das die Methoden __get__(), __set__() oder __delete__() definiert. Wenn ein Klassenattribut ein Descriptor ist, wird sein spezielles Bindungsverhalten bei der Attributsuche ausgelöst. Normalerweise schlägt die Verwendung von a.b zum Abrufen, Setzen oder Löschen eines Attributs in der Klassendefinition von a nach dem Objekt namens b nach, aber wenn b ein Descriptor ist, wird die entsprechende Deskriptormethode aufgerufen. Das Verständnis von Deskriptoren ist der Schlüssel zu einem tiefen Verständnis von Python, da sie die Grundlage für viele Funktionen wie Funktionen, Methoden, Eigenschaften, Klassenmethoden, statische Methoden und Referenzen auf Oberklassen bilden.

Weitere Informationen zu den Methoden von Deskriptoren finden Sie unter Implementierung von Deskriptoren oder im Descriptor How To Guide.

dictionary

Eine assoziative Array, bei der beliebige Schlüssel Werten zugeordnet werden. Die Schlüssel können beliebige Objekte mit den Methoden __hash__() und __eq__() sein. In Perl als Hash bezeichnet.

dictionary comprehension

Eine kompakte Möglichkeit, alle oder einen Teil der Elemente in einem Iterable zu verarbeiten und ein Dictionary mit den Ergebnissen zurückzugeben. results = {n: n ** 2 for n in range(10)} erzeugt ein Dictionary, das den Schlüssel n mit dem Wert n ** 2 zuordnet. Siehe Displays für Listen, Sets und Dictionaries.

dictionary view

Die Objekte, die von dict.keys(), dict.values() und dict.items() zurückgegeben werden, werden Dictionary Views genannt. Sie bieten eine dynamische Ansicht auf die Einträge des Dictionaries, was bedeutet, dass die View Änderungen widerspiegelt, wenn sich das Dictionary ändert. Um die Dictionary View zu einer vollständigen Liste zu zwingen, verwenden Sie list(dictview). Siehe Dictionary View-Objekte.

docstring

Ein String-Literal, das als erster Ausdruck in einer Klasse, Funktion oder einem Modul erscheint. Obwohl es bei der Ausführung der Suite ignoriert wird, wird es vom Compiler erkannt und in das Attribut __doc__ der umschließenden Klasse, Funktion oder des Moduls gestellt. Da es über Introspektion verfügbar ist, ist es der kanonische Ort für die Dokumentation des Objekts.

duck-typing

Ein Programmierstil, der nicht den Typ eines Objekts prüft, um zu bestimmen, ob es über die richtige Schnittstelle verfügt; stattdessen wird die Methode oder das Attribut einfach aufgerufen oder verwendet ("Wenn es wie eine Ente aussieht und wie eine Ente quakt, muss es eine Ente sein."). Durch die Betonung von Schnittstellen anstelle von spezifischen Typen verbessert gut gestalteter Code seine Flexibilität durch polymorphe Substitution. Duck-Typing vermeidet Tests mit type() oder isinstance(). (Beachten Sie jedoch, dass Duck-Typing durch abstrakte Basisklassen ergänzt werden kann.) Stattdessen werden typischerweise hasattr()-Tests oder EAFP-Programmierung verwendet.

dunder

Eine informelle Kurzform für "doppeltes Unterstrich", verwendet, wenn über eine Spezialmethode gesprochen wird. Zum Beispiel wird __init__ oft als "dunder init" ausgesprochen.

EAFP

Easier to ask for forgiveness than permission (Leichter um Verzeihung zu bitten als um Erlaubnis). Dieser gängige Python-Programmierstil geht von der Existenz gültiger Schlüssel oder Attribute aus und fängt Ausnahmen ab, falls die Annahme falsch ist. Dieser saubere und schnelle Stil zeichnet sich durch die Anwesenheit vieler try- und except-Anweisungen aus. Die Technik steht im Gegensatz zum LBYL-Stil, der in vielen anderen Sprachen wie C üblich ist.

evaluate function

Eine Funktion, die aufgerufen werden kann, um ein verzögert ausgewertetes Attribut eines Objekts auszuwerten, wie z. B. den Wert von Typaliasen, die mit der Anweisung type erstellt wurden.

expression

Ein Syntaxstück, das zu einem Wert ausgewertet werden kann. Mit anderen Worten, ein Ausdruck ist eine Ansammlung von Ausdruckselementen wie Literalen, Namen, Attributzugriffen, Operatoren oder Funktionsaufrufen, die alle einen Wert zurückgeben. Im Gegensatz zu vielen anderen Sprachen sind nicht alle Sprachkonstrukte Ausdrücke. Es gibt auch Anweisungen, die nicht als Ausdrücke verwendet werden können, wie z.B. while. Zuweisungen sind ebenfalls Anweisungen, keine Ausdrücke.

extension module

Ein Modul, das in C oder C++ geschrieben ist und die C-API von Python verwendet, um mit dem Kern und mit Benutzercode zu interagieren.

f-string
f-strings

String-Literale, denen f oder F vorangestellt ist, werden allgemein als "f-Strings" bezeichnet, was eine Kurzform für formatierte String-Literale ist. Siehe auch PEP 498.

file object

Ein Objekt, das eine dateiorientierte API (mit Methoden wie read() oder write()) zu einer zugrunde liegenden Ressource bereitstellt. Je nachdem, wie es erstellt wurde, kann ein Datei-Objekt den Zugriff auf eine tatsächliche Datei auf der Festplatte oder auf eine andere Art von Speicher- oder Kommunikationsgerät (z. B. Standardeingabe/-ausgabe, In-Memory-Puffer, Sockets, Pipes usw.) vermitteln. Datei-Objekte werden auch als dateiähnliche Objekte oder Streams bezeichnet.

Es gibt tatsächlich drei Kategorien von Datei-Objekten: rohe Binärdateien, gepufferte Binärdateien und Textdateien. Ihre Schnittstellen sind im Modul io definiert. Der kanonische Weg, ein Datei-Objekt zu erstellen, ist die Verwendung der Funktion open().

file-like object

Ein Synonym für Datei-Objekt.

filesystem encoding and error handler

Encoding und Fehlerbehandler, die von Python verwendet werden, um Bytes vom Betriebssystem zu dekodieren und Unicode an das Betriebssystem zu kodieren.

Das Dateisystem-Encoding muss garantieren, dass alle Bytes unter 128 erfolgreich dekodiert werden. Wenn das Dateisystem-Encoding diese Garantie nicht bietet, können API-Funktionen UnicodeError auslösen.

Die Funktionen sys.getfilesystemencoding() und sys.getfilesystemencodeerrors() können verwendet werden, um das Dateisystem-Encoding und den Fehlerbehandler abzurufen.

Das Dateisystem-Encoding und Fehlerbehandler werden beim Start von Python durch die Funktion PyConfig_Read() konfiguriert: siehe die Member filesystem_encoding und filesystem_errors von PyConfig.

Siehe auch Locale-Encoding.

finder

Ein Objekt, das versucht, den Loader für ein zu importierendes Modul zu finden.

Es gibt zwei Arten von Findern: Meta-Pfad-Finder zur Verwendung mit sys.meta_path und Pfad-Eintrags-Finder zur Verwendung mit sys.path_hooks.

Weitere Einzelheiten finden Sie unter Finder und Loader und importlib.

floor division

Mathematische Division, die auf die nächste ganze Zahl abrundet. Der Operator für die Ganzzahldivision ist //. Beispielsweise wird der Ausdruck 11 // 4 zu 2 ausgewertet, im Gegensatz zu den 2.75, die von der Fließkomma-Echtteilung zurückgegeben werden. Beachten Sie, dass (-11) // 4 gleich -3 ist, da dies -2.75 abgerundet ist. Siehe PEP 238.

free threading

Ein Threading-Modell, bei dem mehrere Threads Python-Bytecode gleichzeitig innerhalb desselben Interpreters ausführen können. Dies steht im Gegensatz zum Global Interpreter Lock, der nur einem Thread die Ausführung von Python-Bytecode zu einem Zeitpunkt erlaubt. Siehe PEP 703.

free variable

Formell, wie im Sprachausführungsmodell definiert, ist eine freie Variable jede Variable, die in einem Namensraum verwendet wird und kein lokaler Variablen in diesem Namensraum ist. Siehe Closure-Variable für ein Beispiel. Praktisch wird der Begriff aufgrund des Namens des Attributs codeobject.co_freevars manchmal auch als Synonym für Closure-Variable verwendet.

function

Eine Reihe von Anweisungen, die einen Wert an einen Aufrufer zurückgibt. Sie kann auch null oder mehr Argumente erhalten, die bei der Ausführung des Körpers verwendet werden können. Siehe auch Parameter, Methode und den Abschnitt Funktionsdefinitionen.

function annotation

Eine Annotation eines Funktionsparameters oder Rückgabewerts.

Funktionsannotationen werden normalerweise für Typ-Hinweise verwendet: Zum Beispiel wird erwartet, dass diese Funktion zwei int-Argumente annimmt und auch einen int-Rückgabewert hat

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

Die Syntax für Funktionsannotationen wird im Abschnitt Funktionsdefinitionen erklärt.

Siehe Variablenannotation und PEP 484, die diese Funktionalität beschreiben. Siehe auch Annotation Best Practices für bewährte Praktiken im Umgang mit Annotationen.

__future__

Eine Zukunfts-Anweisung, from __future__ import <feature>, weist den Compiler an, das aktuelle Modul mit Syntax oder Semantik zu kompilieren, die in einer zukünftigen Version von Python standardmäßig werden. Das Modul __future__ dokumentiert die möglichen Werte für feature. Durch den Import dieses Moduls und die Auswertung seiner Variablen können Sie sehen, wann eine neue Funktion erstmals in die Sprache aufgenommen wurde und wann sie zum Standard wird (oder geworden ist).

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

Der Prozess der Freigabe von Speicher, wenn er nicht mehr verwendet wird. Python führt eine Garbage Collection über Referenzzählung und einen zyklischen Garbage Collector durch, der Referenzzyklen erkennen und durchbrechen kann. Der Garbage Collector kann über das Modul gc gesteuert werden.

generator

Eine Funktion, die einen Generator-Iterator zurückgibt. Sie sieht aus wie eine normale Funktion, außer dass sie yield-Ausdrücke enthält, um eine Reihe von Werten zu erzeugen, die in einer for-Schleife verwendet werden können oder die einzeln mit der Funktion next() abgerufen werden können.

Bezieht sich normalerweise auf eine Generatorfunktion, kann aber in manchen Kontexten auch einen Generator-Iterator bezeichnen. In Fällen, in denen die beabsichtigte Bedeutung unklar ist, vermeidet die Verwendung der vollständigen Begriffe Mehrdeutigkeiten.

generator iterator

Ein Objekt, das von einer Generator-Funktion erstellt wird.

Jedes yield unterbricht die Verarbeitung vorübergehend und speichert den Ausführungszustand (einschließlich lokaler Variablen und ausstehender try-Anweisungen). Wenn der Generator-Iterator fortgesetzt wird, setzt er dort fort, wo er aufgehört hat (im Gegensatz zu Funktionen, die bei jeder Ausführung neu beginnen).

generator expression

Ein Ausdruck, der einen Iterator zurückgibt. Er sieht aus wie ein normaler Ausdruck gefolgt von einer for-Klausel, die eine Schleifenvariable, einen Bereich und eine optionale if-Klausel definiert. Der kombinierte Ausdruck generiert Werte für eine umschließende Funktion

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

Eine Funktion, die aus mehreren Funktionen besteht, die die gleiche Operation für verschiedene Typen implementieren. Welche Implementierung während eines Aufrufs verwendet werden soll, wird durch den Dispatch-Algorithmus bestimmt.

Siehe auch den Glossareintrag Single Dispatch, den Decorator functools.singledispatch() und PEP 443.

generic type

Ein Typ, der parametrisiert werden kann; typischerweise eine Container-Klasse wie list oder dict. Verwendet für Typ-Hinweise und Annotationen.

Weitere Details finden Sie unter Generische Alias-Typen, PEP 483, PEP 484, PEP 585 und dem Modul typing.

GIL

Siehe Global Interpreter Lock.

global interpreter lock

Der Mechanismus, der vom Interpreter CPython verwendet wird, um sicherzustellen, dass zu jedem Zeitpunkt nur ein Thread Python-Bytecode ausführt. Dies vereinfacht die CPython-Implementierung, indem das Objektmodell (einschließlich kritischer integrierter Typen wie dict) implizit sicher vor gleichzeitigen Zugriffen ist. Das Sperren des gesamten Interpreters erleichtert es dem Interpreter, Multithreading zu unterstützen, auf Kosten eines Großteils der Parallelität, die durch Mehrkernprozessoren geboten wird.

Einige Erweiterungsmodule, sowohl Standard- als auch Drittanbieter-Module, sind jedoch so konzipiert, dass sie den GIL freigeben, wenn sie rechenintensive Aufgaben wie Komprimierung oder Hashing durchführen. Außerdem wird der GIL immer freigegeben, wenn I/O-Operationen durchgeführt werden.

Ab Python 3.13 kann der GIL mit der Build-Konfigurationsoption --disable-gil deaktiviert werden. Nach dem Erstellen von Python mit dieser Option muss der Code mit -X gil=0 oder nach dem Setzen der Umgebungsvariablen PYTHON_GIL=0 ausgeführt werden. Diese Funktion ermöglicht eine verbesserte Leistung für Multithread-Anwendungen und erleichtert die effiziente Nutzung von Mehrkern-CPUs. Weitere Einzelheiten finden Sie unter PEP 703.

In früheren Versionen der C-API von Python konnte eine Funktion deklarieren, dass sie den GIL benötigt, um sie verwenden zu können. Dies bezieht sich auf den Besitz eines angehängten Thread-Zustands.

hash-based pyc

Eine Bytecode-Cache-Datei, die den Hash anstelle der letzten Änderungszeit der entsprechenden Quelldatei verwendet, um ihre Gültigkeit zu bestimmen. Siehe Ungültigkeitsprüfung von Bytecode-Caches.

hashable

Ein Objekt ist hashbar, wenn es einen Hashwert hat, der sich während seiner Lebensdauer niemals ändert (es benötigt eine Methode __hash__()) und mit anderen Objekten verglichen werden kann (es benötigt eine Methode __eq__()). Hashbare Objekte, die gleich verglichen werden, müssen denselben Hashwert haben.

Hashbarkeit macht ein Objekt als Schlüssel in einem Dictionary und als Mitglied einer Menge nutzbar, da diese Datenstrukturen den Hashwert intern verwenden.

Die meisten unveränderlichen eingebauten Objekte von Python sind hashbar; veränderliche Container (wie Listen oder Dictionaries) sind es nicht; unveränderliche Container (wie Tupel und Frozensets) sind nur dann hashbar, wenn ihre Elemente hashbar sind. Objekte, die Instanzen benutzerdefinierter Klassen sind, sind standardmäßig hashbar. Sie vergleichen sich alle ungleich (außer mit sich selbst), und ihr Hashwert leitet sich von ihrer id() ab.

IDLE

Eine integrierte Entwicklungs- und Lernumgebung für Python. IDLE — Python Editor und Shell ist ein grundlegender Editor und eine Interpreter-Umgebung, die mit der Standarddistribution von Python ausgeliefert wird.

immortal

Unsterbliche Objekte sind ein Implementierungsdetail von CPython, das in PEP 683 eingeführt wurde.

Wenn ein Objekt unsterblich ist, wird seine Referenzanzahl nie geändert, und daher wird es nie freigegeben, solange der Interpreter läuft. Zum Beispiel sind True und None in CPython unsterblich.

Unsterbliche Objekte können über sys._is_immortal() oder über PyUnstable_IsImmortal() in der C-API identifiziert werden.

immutable

Ein Objekt mit einem festen Wert. Unveränderliche Objekte umfassen Zahlen, Zeichenketten und Tupel. Ein solches Objekt kann nicht geändert werden. Ein neues Objekt muss erstellt werden, wenn ein anderer Wert gespeichert werden soll. Sie spielen eine wichtige Rolle an Stellen, an denen ein konstanter Hashwert benötigt wird, z. B. als Schlüssel in einem Dictionary.

import path

Eine Liste von Speicherorten (oder Pfad-Einträgen), die vom Pfad-basierten Finder nach zu importierenden Modulen durchsucht werden. Während des Imports stammt diese Liste von Speicherorten normalerweise aus sys.path, kann aber für Unterpakete auch aus dem Attribut __path__ des Elternpakets stammen.

importing

Der Prozess, durch den Python-Code in einem Modul für Python-Code in einem anderen Modul verfügbar gemacht wird.

importer

Ein Objekt, das ein Modul sowohl findet als auch lädt; ein sowohl ein Finder als auch ein Loader-Objekt.

interactive

Python hat einen interaktiven Interpreter, was bedeutet, dass Sie Anweisungen und Ausdrücke an der Interpreter-Eingabeaufforderung eingeben, sofort ausführen und ihre Ergebnisse sehen können. Starten Sie einfach python ohne Argumente (möglicherweise, indem Sie es aus dem Hauptmenü Ihres Computers auswählen). Dies ist eine sehr mächtige Methode, um neue Ideen zu testen oder Module und Pakete zu inspizieren (erinnern Sie sich an help(x)). Mehr über den interaktiven Modus erfahren Sie unter Interaktiver Modus.

interpreted

Python ist eine interpretierte Sprache im Gegensatz zu einer kompilierten, obwohl die Unterscheidung aufgrund des Bytecode-Compilers verschwommen sein kann. Das bedeutet, dass Quelldateien direkt ausgeführt werden können, ohne explizit eine ausführbare Datei zu erstellen, die dann ausgeführt wird. Interpretierte Sprachen haben typischerweise einen kürzeren Entwicklungs-/Debug-Zyklus als kompilierte, obwohl ihre Programme im Allgemeinen auch langsamer laufen. Siehe auch interaktiv.

interpreter shutdown

Wenn der Python-Interpreter aufgefordert wird, sich zu beenden, tritt er in eine spezielle Phase ein, in der er alle zugewiesenen Ressourcen, wie Module und verschiedene kritische interne Strukturen, schrittweise freigibt. Er ruft auch mehrmals den Garbage Collector auf. Dies kann die Ausführung von Code in benutzerdefinierten Destruktoren oder Weakref-Callbacks auslösen. Code, der während der Shutdown-Phase ausgeführt wird, kann verschiedene Ausnahmen auslösen, da die Ressourcen, auf die er angewiesen ist, möglicherweise nicht mehr funktionieren (übliche Beispiele sind Bibliotheksmodule oder die Warnmechanismen).

Der Hauptgrund für das Herunterfahren des Interpreters ist, dass das Modul __main__ oder das laufende Skript seine Ausführung beendet hat.

iterable

Ein Objekt, das in der Lage ist, seine Mitglieder einzeln zurückzugeben. Beispiele für Iterables sind alle Sequenztypen (wie list, str und tuple) und einige Nicht-Sequenztypen wie dict, Datei-Objekte und Objekte von Klassen, die Sie mit einer __iter__()-Methode oder mit einer __getitem__()-Methode definieren, die Sequenz-Semantik implementiert.

Iterables können in einer for-Schleife und an vielen anderen Stellen, an denen eine Sequenz benötigt wird (zip(), map(), ...), verwendet werden. Wenn ein iterable Objekt als Argument an die eingebaute Funktion iter() übergeben wird, gibt diese einen Iterator für das Objekt zurück. Dieser Iterator ist für einen einzigen Durchlauf über die Menge der Werte gut. Bei der Verwendung von Iterables ist es normalerweise nicht notwendig, iter() aufzurufen oder selbst mit Iterator-Objekten umzugehen. Die for-Anweisung erledigt dies automatisch für Sie und erstellt eine temporäre, unbenannte Variable, um den Iterator für die Dauer der Schleife zu halten. Siehe auch Iterator, Sequenz und Generator.

iterator

Ein Objekt, das einen Datenstrom darstellt. Wiederholte Aufrufe der Methode __next__() des Iterators (oder die Übergabe an die eingebaute Funktion next()) geben nacheinander Elemente aus dem Strom zurück. Wenn keine weiteren Daten verfügbar sind, wird stattdessen eine StopIteration-Ausnahme ausgelöst. Zu diesem Zeitpunkt ist das Iterator-Objekt erschöpft und alle weiteren Aufrufe seiner Methode __next__() lösen erneut StopIteration aus. Iteratoren müssen eine Methode __iter__() haben, die das Iterator-Objekt selbst zurückgibt, sodass jeder Iterator auch iterierbar ist und an den meisten Stellen, an denen andere Iterables akzeptiert werden, verwendet werden kann. Eine bemerkenswerte Ausnahme sind Codes, die mehrere Iterationsdurchläufe versuchen. Ein Container-Objekt (wie eine list) erzeugt jedes Mal einen frischen neuen Iterator, wenn Sie es an die Funktion iter() übergeben oder es in einer for-Schleife verwenden. Der Versuch, dies mit einem Iterator zu tun, gibt nur denselben erschöpften Iterator zurück, der im vorherigen Iterationsdurchlauf verwendet wurde, was ihn wie einen leeren Container erscheinen lässt.

Weitere Informationen finden Sie unter Iterator-Typen.

CPython Implementierungsdetails: CPython wendet die Anforderung, dass ein Iterator __iter__() definiert, nicht konsistent an. Beachten Sie außerdem, dass das Free-Threading von CPython die Thread-Sicherheit von Iterator-Operationen nicht garantiert.

key function

Eine Schlüsselfunktion oder Kollationsfunktion ist ein aufrufbares Objekt, das einen Wert zurückgibt, der zum Sortieren oder Ordnen verwendet wird. Zum Beispiel wird locale.strxfrm() verwendet, um einen Sortierschlüssel zu erzeugen, der gebietsschemaabhängige Sortierkonventionen berücksichtigt.

Eine Reihe von Werkzeugen in Python akzeptieren Schlüsselfunktionen, um zu steuern, wie Elemente geordnet oder gruppiert werden. Dazu gehören min(), max(), sorted(), list.sort(), heapq.merge(), heapq.nsmallest(), heapq.nlargest() und itertools.groupby().

Es gibt mehrere Möglichkeiten, eine Schlüsselfunktion zu erstellen. Zum Beispiel kann die Methode str.lower() als Schlüsselfunktion für die Groß-/Kleinschreibung ignorierende Sortierungen dienen. Alternativ kann eine Schlüsselfunktion aus einem lambda-Ausdruck wie lambda r: (r[0], r[2]) erstellt werden. Auch operator.attrgetter(), operator.itemgetter() und operator.methodcaller() sind drei Konstruktoren für Schlüsselfunktionen. Siehe den Sorting HOW TO für Beispiele, wie man Schlüsselfunktionen erstellt und verwendet.

keyword argument

Siehe Argument.

lambda

Eine anonyme Inline-Funktion, die aus einem einzigen Ausdruck besteht, der ausgewertet wird, wenn die Funktion aufgerufen wird. Die Syntax zum Erstellen einer Lambda-Funktion lautet lambda [parameter]: ausdruck

LBYL

Look before you leap (Schau, bevor du springst). Dieser Programmierstil testet explizit Vorbedingungen, bevor Aufrufe oder Lookups erfolgen. Dieser Stil steht im Gegensatz zum EAFP-Ansatz und zeichnet sich durch die Anwesenheit vieler if-Anweisungen aus.

In einer Multi-Thread-Umgebung kann der LBYL-Ansatz ein Wettlaufszenario zwischen "Schauen" und "Springen" riskieren. Zum Beispiel kann der Code if key in mapping: return mapping[key] fehlschlagen, wenn ein anderer Thread key aus mapping entfernt, nachdem der Test erfolgt ist, aber vor dem Lookup. Dieses Problem kann mit Locks oder durch die Verwendung des EAFP-Ansatzes gelöst werden.

lexical analyzer

Formeller Name für den Tokenizer; siehe Token.

list

Eine eingebaute Python Sequenz. Trotz ihres Namens ähnelt sie eher einem Array in anderen Sprachen als einer verketteten Liste, da der Zugriff auf Elemente *O*(1) ist.

list comprehension

Eine kompakte Methode, um alle oder einen Teil der Elemente einer Sequenz zu verarbeiten und eine Liste mit den Ergebnissen zurückzugeben. ergebnis = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] generiert eine Liste von Zeichenketten, die gerade Hexadezimalzahlen (0x..) im Bereich von 0 bis 255 enthalten. Die Klausel if ist optional. Wenn sie weggelassen wird, werden alle Elemente in range(256) verarbeitet.

loader

Ein Objekt, das ein Modul lädt. Es muss die Methoden exec_module() und create_module() definieren, um die Schnittstelle Loader zu implementieren. Ein Loader wird typischerweise von einem Finder zurückgegeben. Siehe auch

locale encoding

Unter Unix ist es die Kodierung des LC_CTYPE-Gebietsschemas. Sie kann mit locale.setlocale(locale.LC_CTYPE, new_locale) gesetzt werden.

Unter Windows ist es die ANSI-Codepage (z.B. "cp1252").

Unter Android und VxWorks verwendet Python "utf-8" als Locale-Encoding.

locale.getencoding() kann verwendet werden, um die Locale-Kodierung abzurufen.

Siehe auch Dateisystemkodierung und Fehlerbehandlungsroutine.

magic method

Ein informelles Synonym für Spezialmethode.

mapping

Ein Container-Objekt, das beliebige Schlüsselsuchen unterstützt und die Methoden implementiert, die in den collections.abc.Mapping- oder collections.abc.MutableMapping abstrakten Basisklassen spezifiziert sind. Beispiele hierfür sind dict, collections.defaultdict, collections.OrderedDict und collections.Counter.

meta path finder

Ein Finder, der durch eine Suche in sys.meta_path zurückgegeben wird. Meta-Path-Finder sind mit Pfadeintrags-Findern verwandt, aber unterschiedlich zu ihnen.

Siehe importlib.abc.MetaPathFinder für die Methoden, die Meta-Path-Finder implementieren.

metaclass

Die Klasse einer Klasse. Klassendefinitionen erstellen einen Klassennamen, ein Klassenverzeichnis und eine Liste von Basisklassen. Die Metaklasse ist dafür verantwortlich, diese drei Argumente zu nehmen und die Klasse zu erstellen. Die meisten objektorientierten Programmiersprachen bieten eine Standardimplementierung. Was Python besonders macht, ist, dass es möglich ist, benutzerdefinierte Metaklassen zu erstellen. Die meisten Benutzer benötigen dieses Werkzeug nie, aber wenn der Bedarf entsteht, können Metaklassen mächtige, elegante Lösungen bieten. Sie wurden für die Protokollierung von Attributzugriffen, die Hinzufügung von Thread-Sicherheit, die Verfolgung von Objekterstellung, die Implementierung von Singletons und viele andere Aufgaben verwendet.

Weitere Informationen finden Sie unter Metaklassen.

method

Eine Funktion, die innerhalb eines Klassenkörpers definiert ist. Wenn sie als Attribut eines Instanz dieser Klasse aufgerufen wird, erhält die Methode das Instanzobjekt als ihr erstes Argument (das üblicherweise self genannt wird). Siehe Funktion und verschachtelter Gültigkeitsbereich.

method resolution order

Die Method Resolution Order (MRO) ist die Reihenfolge, in der Basisklassen bei einer Suche nach einem Mitglied durchsucht werden. Details zum Algorithmus, der seit der Veröffentlichung 2.3 vom Python-Interpreter verwendet wird, finden Sie unter Die Python 2.3 Method Resolution Order.

module

Ein Objekt, das als organisatorische Einheit von Python-Code dient. Module haben einen Namensraum, der beliebige Python-Objekte enthält. Module werden durch den Prozess des Importierens in Python geladen.

Siehe auch Paket.

module spec

Ein Namensraum, der die Import-bezogenen Informationen enthält, die zum Laden eines Moduls verwendet werden. Eine Instanz von importlib.machinery.ModuleSpec.

Siehe auch Modul-Spezifikationen.

MRO

Siehe Method Resolution Order.

mutable

Veränderliche Objekte können ihren Wert ändern, behalten aber ihre id(). Siehe auch unveränderlich.

named tuple

Der Begriff "benanntes Tupel" bezieht sich auf jeden Typ oder jede Klasse, die von Tupel erbt und deren indizierbare Elemente auch über benannte Attribute zugänglich sind. Der Typ oder die Klasse kann auch andere Merkmale aufweisen.

Mehrere eingebaute Typen sind benannte Tupel, einschließlich der Werte, die von time.localtime() und os.stat() zurückgegeben werden. Ein weiteres Beispiel ist sys.float_info

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

Einige benannte Tupel sind eingebaute Typen (wie die oben genannten Beispiele). Alternativ kann ein benanntes Tupel aus einer regulären Klassendefinition erstellt werden, die von tuple erbt und benannte Felder definiert. Eine solche Klasse kann von Hand geschrieben werden oder sie kann durch Erben von typing.NamedTuple oder mit der Factory-Funktion collections.namedtuple() erstellt werden. Letztere Techniken fügen auch einige zusätzliche Methoden hinzu, die in handgeschriebenen oder eingebauten benannten Tupeln möglicherweise nicht gefunden werden.

namespace

Der Ort, an dem eine Variable gespeichert wird. Namensräume werden als Wörterbücher implementiert. Es gibt lokale, globale und eingebaute Namensräume sowie verschachtelte Namensräume in Objekten (in Methoden). Namensräume unterstützen Modularität, indem sie Namenskonflikte verhindern. Beispielsweise werden die Funktionen builtins.open und os.open() durch ihre Namensräume unterschieden. Namensräume tragen auch zur Lesbarkeit und Wartbarkeit bei, indem sie klarstellen, welches Modul eine Funktion implementiert. Zum Beispiel macht das Schreiben von random.seed() oder itertools.islice() deutlich, dass diese Funktionen von den Modulen random bzw. itertools implementiert werden.

namespace package

Ein Paket, das nur als Container für Unterpakete dient. Namensraum-Pakete haben möglicherweise keine physische Darstellung und sind insbesondere nicht wie ein reguläres Paket, da sie keine Datei __init__.py haben.

Namensraum-Pakete ermöglichen es mehreren individuell installierbaren Paketen, ein gemeinsames Elternpaket zu haben. Andernfalls wird die Verwendung eines regulären Pakets empfohlen.

Weitere Informationen finden Sie unter PEP 420 und Namensraum-Pakete.

Siehe auch Modul.

nested scope

Die Fähigkeit, auf eine Variable in einer umschließenden Definition zu verweisen. Zum Beispiel kann eine Funktion, die innerhalb einer anderen Funktion definiert ist, auf Variablen in der äußeren Funktion verweisen. Beachten Sie, dass verschachtelte Gültigkeitsbereiche standardmäßig nur für Referenzen und nicht für Zuweisungen funktionieren. Lokale Variablen lesen und schreiben sowohl im innersten Gültigkeitsbereich. Ebenso lesen und schreiben globale Variablen im globalen Namensraum. Das Schlüsselwort nonlocal ermöglicht das Schreiben in äußere Gültigkeitsbereiche.

new-style class

Alter Name für die Art von Klassen, die jetzt für alle Klassenobjekte verwendet wird. In früheren Python-Versionen konnten nur Klassen im neuen Stil die neueren, vielseitigeren Funktionen von Python wie __slots__, Deskriptoren, Eigenschaften, __getattribute__(), Klassenmethoden und statische Methoden verwenden.

object

Jede Daten mit Zustand (Attribute oder Wert) und definiertem Verhalten (Methoden). Auch die ultimative Basisklasse jeder Klasse im neuen Stil.

optimized scope

Ein Gültigkeitsbereich, in dem Ziel-lokale Variablennamen dem Compiler beim Kompilieren des Codes zuverlässig bekannt sind, was eine Optimierung des Lese- und Schreibzugriffs auf diese Namen ermöglicht. Die lokalen Namensräume für Funktionen, Generatoren, Koroutinen, Comprehensions und Generator-Ausdrücke werden auf diese Weise optimiert. Hinweis: Die meisten Interpreter-Optimierungen werden auf alle Gültigkeitsbereiche angewendet, nur diejenigen, die auf einer bekannten Menge lokaler und nonlocaler Variablennamen basieren, sind auf optimierte Gültigkeitsbereiche beschränkt.

package

Ein Python Modul, das Untermodule oder rekursiv Unterpakete enthalten kann. Technisch gesehen ist ein Paket ein Python-Modul mit einem Attribut __path__.

Siehe auch reguläres Paket und Namensraum-Paket.

parameter

Eine benannte Entität in einer Funktions- (oder Methoden-) Definition, die ein Argument (oder in einigen Fällen Argumente) angibt, das die Funktion akzeptieren kann. Es gibt fünf Arten von Parametern:

  • positions- oder schlüsselwortbasiert: Gibt ein Argument an, das entweder positionell oder als Schlüsselwortargument übergeben werden kann. Dies ist die Standardart von Parametern, z.B. foo und bar im folgenden:

    def func(foo, bar=None): ...
    
  • nur positionell: Gibt ein Argument an, das nur positionell übergeben werden kann. Nur-positionelle Parameter können durch Einbeziehung eines /-Zeichens in der Parameterliste der Funktionsdefinition danach definiert werden, z.B. posonly1 und posonly2 im folgenden:

    def func(posonly1, posonly2, /, positional_or_keyword): ...
    
  • nur schlüsselwortbasiert: Gibt ein Argument an, das nur per Schlüsselwort übergeben werden kann. Nur-schlüsselwortbasierte Parameter können durch Einbeziehung eines einzelnen Var-positionellen Parameters oder eines leeren * in der Parameterliste der Funktionsdefinition davor definiert werden, z.B. kw_only1 und kw_only2 im folgenden:

    def func(arg, *, kw_only1, kw_only2): ...
    
  • var-positionell: Gibt an, dass eine beliebige Sequenz von positionellen Argumenten bereitgestellt werden kann (zusätzlich zu allen positionellen Argumenten, die bereits von anderen Parametern akzeptiert werden). Ein solcher Parameter kann durch Voranstellen des Parameternamens mit einem * definiert werden, z.B. args im folgenden:

    def func(*args, **kwargs): ...
    
  • var-keyword: gibt an, dass beliebig viele Schlüsselwortargumente übergeben werden können (zusätzlich zu allen Schlüsselwortargumenten, die bereits von anderen Parametern akzeptiert werden). Ein solcher Parameter kann durch Voranstellen des Parameternamens mit ** definiert werden, z. B. kwargs im obigen Beispiel.

Parameter können sowohl optionale als auch erforderliche Argumente spezifizieren, sowie Standardwerte für einige optionale Argumente.

Siehe auch den Glossareintrag Argument, die FAQ-Frage zu dem Unterschied zwischen Argumenten und Parametern, die Klasse inspect.Parameter, den Abschnitt Funktionsdefinitionen und PEP 362.

Pfad-Eintrag

Eine einzelne Position im Importpfad, den der pfadbasierte Finder zur Suche nach zu importierenden Modulen konsultiert.

Pfad-Eintrag-Finder

Ein Finder, der von einem aufrufbaren Objekt in sys.path_hooks zurückgegeben wird (d. h. ein Pfad-Eintrag-Hook), der weiß, wie Module anhand eines Pfad-Eintrags gefunden werden können.

Siehe importlib.abc.PathEntryFinder für die Methoden, die Pfad-Eintrag-Finder implementieren.

Pfad-Eintrag-Hook

Ein aufrufbares Objekt in der Liste sys.path_hooks, das einen Pfad-Eintrag-Finder zurückgibt, wenn es weiß, wie Module in einem bestimmten Pfad-Eintrag gefunden werden.

Pfadbasierter Finder

Einer der Standard-Meta-Pfad-Finder, der einen Importpfad nach Modulen durchsucht.

Pfadähnliches Objekt

Ein Objekt, das einen Dateisystempfad repräsentiert. Ein pfadähnliches Objekt ist entweder ein str- oder bytes-Objekt, das einen Pfad repräsentiert, oder ein Objekt, das das os.PathLike-Protokoll implementiert. Ein Objekt, das das os.PathLike-Protokoll unterstützt, kann durch Aufrufen der Funktion os.fspath() in einen str- oder bytes-Dateisystempfad konvertiert werden; os.fsdecode() und os.fsencode() können verwendet werden, um stattdessen ein str- oder bytes-Ergebnis zu garantieren. Eingeführt durch PEP 519.

PEP

Python Enhancement Proposal. Ein PEP ist ein Design-Dokument, das Informationen für die Python-Community bereitstellt oder ein neues Feature für Python oder dessen Prozesse oder Umgebung beschreibt. PEPs sollten eine präzise technische Spezifikation und eine Begründung für vorgeschlagene Features liefern.

PEPs sind als die primären Mechanismen zur Vorschlagung großer neuer Features, zum Sammeln von Community-Input zu einem Thema und zur Dokumentation der Design-Entscheidungen, die in Python eingeflossen sind, gedacht. Der PEP-Autor ist dafür verantwortlich, Konsens in der Community aufzubauen und abweichende Meinungen zu dokumentieren.

Siehe PEP 1.

Anteil

Eine Menge von Dateien in einem einzigen Verzeichnis (möglicherweise in einer Zip-Datei gespeichert), die zu einem Namespace-Paket beitragen, wie in PEP 420 definiert.

Positionsargument

Siehe Argument.

Vorläufige API

Eine vorläufige API ist eine, die absichtlich von den Abwärtskompatibilitätsgarantien der Standardbibliothek ausgeschlossen wurde. Während größere Änderungen an solchen Schnittstellen nicht erwartet werden, können, solange sie als vorläufig gekennzeichnet sind, abwärtskompatible Änderungen (bis hin zur Entfernung der Schnittstelle) auftreten, wenn dies von den Kernentwicklern für notwendig erachtet wird. Solche Änderungen werden nicht willkürlich vorgenommen – sie treten nur auf, wenn schwerwiegende grundlegende Fehler aufgedeckt werden, die vor der Aufnahme der API übersehen wurden.

Auch für vorläufige APIs gelten abwärtskompatible Änderungen als „Lösung letzter Wahl“ – es wird weiterhin versucht, eine abwärtskompatible Lösung für identifizierte Probleme zu finden.

Dieser Prozess ermöglicht es der Standardbibliothek, sich im Laufe der Zeit weiterzuentwickeln, ohne problematische Designfehler für längere Zeiträume einzuschließen. Siehe PEP 411 für weitere Details.

Vorläufiges Paket

Siehe Vorläufige API.

Python 3000

Codename für die Python 3.x Release-Reihe (vor langer Zeit geprägt, als die Veröffentlichung der Version 3 noch in ferner Zukunft lag). Dies wird auch als „Py3k“ abgekürzt.

Pythonisch

Eine Idee oder ein Code-Snippet, das eng den gängigsten Idiomen der Python-Sprache folgt und nicht Code verwendet, der Konzepte aus anderen Sprachen übernimmt. Zum Beispiel ist ein gängiges Idiom in Python, mit einer for-Anweisung über alle Elemente eines Iterierbaren zu iterieren. Viele andere Sprachen haben diese Art von Konstrukt nicht, daher verwenden Personen, die mit Python nicht vertraut sind, manchmal einen numerischen Zähler anstelle dessen.

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

Im Gegensatz zur saubereren, pythonischen Methode

for piece in food:
    print(piece)
Qualifizierter Name

Ein punktierter Name, der den „Pfad“ vom globalen Namensraum eines Moduls zu einer in diesem Modul definierten Klasse, Funktion oder Methode zeigt, wie in PEP 3155 definiert. Für Top-Level-Funktionen und -Klassen ist der qualifizierte Name derselbe wie der Name des Objekts.

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

Wenn er zur Referenzierung von Modulen verwendet wird, bedeutet der vollqualifizierte Name den gesamten punktierten Pfad zum Modul, einschließlich aller übergeordneten Pakete, z. B. email.mime.text.

>>> import email.mime.text
>>> email.mime.text.__name__
'email.mime.text'
Referenzzähler

Die Anzahl der Referenzen auf ein Objekt. Wenn der Referenzzähler eines Objekts auf Null fällt, wird es freigegeben. Einige Objekte sind unsterblich und haben Referenzzähler, die nie geändert werden, und daher werden die Objekte nie freigegeben. Die Referenzzählung ist für Python-Code im Allgemeinen nicht sichtbar, aber sie ist ein Schlüsselelement der CPython-Implementierung. Programmierer können die Funktion sys.getrefcount() aufrufen, um den Referenzzähler für ein bestimmtes Objekt zurückzugeben.

In CPython werden Referenzzähler nicht als stabile oder gut definierte Werte betrachtet; die Anzahl der Referenzen auf ein Objekt und wie sich diese Zahl durch Python-Code auswirkt, kann zwischen Versionen unterschiedlich sein.

Reguläres Paket

Ein traditionelles Paket, wie z. B. ein Verzeichnis, das eine __init__.py-Datei enthält.

Siehe auch Namespace-Paket.

REPL

Ein Akronym für die „Read–Eval–Print Loop“, ein anderer Name für die interaktive Interpreter-Shell.

__slots__

Eine Deklaration innerhalb einer Klasse, die Speicher spart, indem sie Platz für Instanzattribute vorab deklariert und Instanzwörterbücher eliminiert. Obwohl beliebt, ist die Technik nicht ganz einfach richtig zu handhaben und sollte seltenen Fällen vorbehalten sein, in denen es eine große Anzahl von Instanzen in einer speicherbeschränkten Anwendung gibt.

Sequenz

Ein Iterierbares, das effizienten Elementzugriff mit ganzzahligen Indizes über die spezielle Methode __getitem__() unterstützt und eine Methode __len__() definiert, die die Länge der Sequenz zurückgibt. Einige eingebaute Sequenztypen sind list, str, tuple und bytes. Beachten Sie, dass dict ebenfalls __getitem__() und __len__() unterstützt, aber als Mapping und nicht als Sequenz gilt, da die Lookups beliebige Hash-Objekte anstelle von ganzen Zahlen verwenden.

Die abstrakte Basisklasse collections.abc.Sequence definiert eine viel reichhaltigere Schnittstelle, die über __getitem__() und __len__() hinausgeht und count(), index(), __contains__() und __reversed__() hinzufügt. Typen, die diese erweiterte Schnittstelle implementieren, können explizit mit register() registriert werden. Für weitere Dokumentation zu Sequenzmethoden im Allgemeinen siehe Gemeinsame Sequenzoperationen.

Set-Comprehension

Eine kompakte Methode, um alle oder einen Teil der Elemente eines Iterierbaren zu verarbeiten und ein Set mit den Ergebnissen zurückzugeben. ergebnisse = {c for c in 'abracadabra' if c not in 'abc'} generiert das Set von Strings {'r', 'd'}. Siehe Displays für Listen, Sets und Dictionaries.

Single Dispatch

Eine Form der Generischen Funktions-Dispatche, bei der die Implementierung basierend auf dem Typ eines einzelnen Arguments ausgewählt wird.

Slice

Ein Objekt, das normalerweise einen Teil einer Sequenz enthält. Ein Slice wird mit der Subskriptnotation [] erstellt, wobei bei mehreren Zahlen Doppelpunkte zwischen ihnen stehen, wie z. B. bei variablen_name[1:3:5]. Die Klammer- (Subskript-) Notation verwendet intern slice-Objekte.

Soft-veraltet

Eine Soft-veraltete API sollte in neuem Code nicht verwendet werden, aber es ist sicher, sie für bereits bestehenden Code zu verwenden. Die API bleibt dokumentiert und getestet, wird aber nicht weiter verbessert.

Soft-Veraltung, im Gegensatz zur normalen Veraltung, plant nicht die Entfernung der API und gibt keine Warnungen aus.

Siehe PEP 387: Soft Deprecation.

Spezielle Methode

Eine Methode, die implizit von Python aufgerufen wird, um eine bestimmte Operation für einen Typ auszuführen, wie z. B. Addition. Solche Methoden haben Namen, die mit doppelten Unterstrichen beginnen und enden. Spezielle Methoden sind in Namen spezieller Methoden dokumentiert.

Standardbibliothek

Die Sammlung von Paketen, Modulen und Erweiterungsmodulen, die als Teil des offiziellen Python-Interpreterpakets verteilt werden. Die genaue Zusammensetzung der Sammlung kann je nach Plattform, verfügbaren Systembibliotheken oder anderen Kriterien variieren. Dokumentation finden Sie unter Die Python-Standardbibliothek.

Siehe auch sys.stdlib_module_names für eine Liste aller möglichen Namen von Modulen der Standardbibliothek.

Anweisung

Eine Anweisung ist Teil einer Suite (einem „Block“ von Code). Eine Anweisung ist entweder ein Ausdruck oder eine von mehreren Konstrukten mit einem Schlüsselwort, wie z. B. if, while oder for.

Statischer Typ-Checker

Ein externes Werkzeug, das Python-Code liest und analysiert, um nach Problemen wie falschen Typen zu suchen. Siehe auch Typ-Hints und das Modul typing.

Stdlib

Eine Abkürzung für Standardbibliothek.

Starke Referenz

In Pythons C-API ist eine starke Referenz eine Referenz auf ein Objekt, das dem Code gehört, der die Referenz hält. Die starke Referenz wird durch Aufrufen von Py_INCREF() genommen, wenn die Referenz erstellt wird, und mit Py_DECREF() freigegeben, wenn die Referenz gelöscht wird.

Die Funktion Py_NewRef() kann verwendet werden, um eine starke Referenz auf ein Objekt zu erstellen. Normalerweise muss die Funktion Py_DECREF() vor dem Verlassen des Gültigkeitsbereichs der starken Referenz aufgerufen werden, um ein Speichern einer Referenz zu vermeiden.

Siehe auch Geliehene Referenz.

t-String
t-Strings

String-Literale, denen ein t oder T vorangestellt ist, werden oft als „t-Strings“ bezeichnet, kurz für Template-String-Literale.

Textkodierung

Ein String in Python ist eine Folge von Unicode-Codepunkten (im Bereich U+0000U+10FFFF). Um einen String zu speichern oder zu übertragen, muss er als Byte-Sequenz serialisiert werden.

Das Serialisieren eines Strings in eine Byte-Sequenz wird als „Kodierung“ bezeichnet, und das Wiederherstellen des Strings aus der Byte-Sequenz als „Dekodierung“.

Es gibt eine Vielzahl von verschiedenen Text-Serialisierungs-Codecs, die kollektiv als „Textkodierungen“ bezeichnet werden.

Textdatei

Ein Datei-Objekt, das in der Lage ist, str-Objekte zu lesen und zu schreiben. Oft greift eine Textdatei tatsächlich auf einen byte-orientierten Datenstrom zu und behandelt die Textkodierung automatisch. Beispiele für Textdateien sind Dateien, die im Textmodus geöffnet wurden ('r' oder 'w'), sys.stdin, sys.stdout und Instanzen von io.StringIO.

Siehe auch Binärdatei für ein Datei-Objekt, das in der Lage ist, Byte-ähnliche Objekte zu lesen und zu schreiben.

Thread-Status

Die Informationen, die von der CPython-Laufzeitumgebung zur Ausführung in einem OS-Thread verwendet werden. Dies beinhaltet beispielsweise die aktuelle Ausnahme, falls vorhanden, und den Zustand des Bytecode-Interpreters.

Jeder Thread-Status ist an einen einzelnen OS-Thread gebunden, aber Threads können viele verfügbare Thread-Status haben. Höchstens einer davon kann gleichzeitig angehängt sein.

Ein angehängter Thread-Status ist erforderlich, um die meisten Python-C-APIs aufrufen zu können, es sei denn, eine Funktion dokumentiert dies ausdrücklich anders. Der Bytecode-Interpreter läuft nur unter einem angehängten Thread-Status.

Jeder Thread-Status gehört zu einem einzigen Interpreter, aber jeder Interpreter kann viele Thread-Status haben, einschließlich mehrerer für denselben OS-Thread. Thread-Status von mehreren Interpretern können an denselben Thread gebunden sein, aber nur einer kann zu einem bestimmten Zeitpunkt in diesem Thread angehängt sein.

Siehe Thread-Status und der Global Interpreter Lock für weitere Informationen.

Token

Eine kleine Einheit des Quellcodes, die vom Lexikalischen Analysator (auch Tokenizer genannt) generiert wird. Namen, Zahlen, Zeichenketten, Operatoren, Zeilenumbrüche und ähnliches werden durch Token repräsentiert.

Das Modul tokenize stellt den lexikalischen Analysator von Python bereit. Das Modul token enthält Informationen über die verschiedenen Arten von Token.

Dreifach-geklammerter String

Ein String, der durch drei Instanzen entweder eines Anführungszeichens (”) oder eines Apostrophs (‘) begrenzt ist. Obwohl sie keine Funktionalität bieten, die mit einfachen Anführungszeichen nicht verfügbar ist, sind sie aus einer Reihe von Gründen nützlich. Sie ermöglichen es Ihnen, unescaped einfache und doppelte Anführungszeichen innerhalb eines Strings einzufügen, und sie können sich ohne die Verwendung des Fortsetzungszeichens über mehrere Zeilen erstrecken, was sie besonders nützlich beim Schreiben von Docstrings macht.

Typ

Der Typ eines Python-Objekts bestimmt, um welche Art von Objekt es sich handelt; jedes Objekt hat einen Typ. Der Typ eines Objekts ist als sein Attribut __class__ zugänglich oder kann mit type(obj) abgerufen werden.

Typ-Alias

Ein Synonym für einen Typ, das durch Zuweisen des Typs zu einem Bezeichner erstellt wird.

Typ-Aliase sind nützlich, um Typ-Hints zu vereinfachen. Zum Beispiel

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

könnte auf folgende Weise lesbarer gestaltet werden

Color = tuple[int, int, int]

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

Siehe typing und PEP 484, die diese Funktionalität beschreiben.

Typ-Hint

Eine Annotation, die den erwarteten Typ für eine Variable, ein Klassenattribut oder einen Funktionsparameter oder Rückgabewert angibt.

Typ-Hints sind optional und werden nicht von Python erzwungen, aber sie sind nützlich für statische Typ-Checker. Sie können auch IDEs bei der Code-Vervollständigung und beim Refactoring unterstützen.

Typ-Hints von globalen Variablen, Klassenattributen und Funktionen, aber nicht von lokalen Variablen, können mit typing.get_type_hints() abgerufen werden.

Siehe typing und PEP 484, die diese Funktionalität beschreiben.

Universelle Newlines

Eine Art, Textströme zu interpretieren, bei der alle folgenden Zeichen als Zeilenende erkannt werden: die Unix-Konvention für Zeilenenden '\n', die Windows-Konvention '\r\n' und die alte Macintosh-Konvention '\r'. Siehe PEP 278 und PEP 3116, sowie bytes.splitlines() für eine zusätzliche Verwendung.

Variablen-Annotation

Eine Annotation einer Variablen oder eines Klassenattributs.

Bei der Annotation einer Variablen oder eines Klassenattributs ist die Zuweisung optional

class C:
    field: 'annotation'

Variablen-Annotationen werden üblicherweise für Typ-Hints verwendet: zum Beispiel wird erwartet, dass diese Variable int-Werte annimmt

count: int = 0

Die Syntax für Variablen-Annotationen wird im Abschnitt Annotierte Zuweisungsanweisungen erklärt.

Siehe Funktionsannotation, PEP 484 und PEP 526, die diese Funktionalität beschreiben. Siehe auch Best Practices für Annotationen für Best Practices im Umgang mit Annotationen.

Virtuelle Umgebung

Eine kooperativ isolierte Laufzeitumgebung, die es Python-Benutzern und -Anwendungen ermöglicht, Python-Distributionspakete zu installieren und zu aktualisieren, ohne das Verhalten anderer auf demselben System laufender Python-Anwendungen zu beeinträchtigen.

Siehe auch venv.

Virtuelle Maschine

Ein Computer, der vollständig in Software definiert ist. Pythons virtuelle Maschine führt den von der Bytecode-Compiler erzeugten Bytecode aus.

Walross-Operator

Eine humorvolle Bezeichnung für den Zuweisungsoperator :=, da er bei seitlicher Betrachtung ein wenig wie ein Walross aussieht.

Zen of Python

Eine Liste von Python-Designprinzipien und -philosophien, die hilfreich für das Verständnis und die Verwendung der Sprache sind. Die Liste kann gefunden werden, indem man „import this“ an der interaktiven Eingabeaufforderung eingibt.