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 vonisinstance()undissubclass()erkannt werden; siehe die Dokumentation des Modulsabc. Python kommt mit vielen integrierten ABCs für Datenstrukturen (im Modulcollections.abc), Zahlen (im Modulnumbers), Streams (im Modulio), Import-Finder und Loader (im Modulimportlib.abc). Eigene ABCs können mit dem Modulabcerstellt 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 sind3und5beide Keyword-Argumente in den folgenden Aufrufen voncomplex()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 sind3und5beide Positionsargumente in den folgenden Aufrufencomplex(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 defdefinierte Coroutine, außer dass sieyield-Ausdrücke zur Erzeugung einer Reihe von Werten enthält, die in einerasync 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 sowieasync for- undasync 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ächstenyield-Ausdruck ausführt.Jedes
yieldpausiert 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 forlöst die von der Methode__anext__()eines asynchronen Iterators zurückgegebenen awaitables auf, bis eine AusnahmeStopAsyncIterationausgelö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 mitgetattr()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.bufferund Instanzen vonio.BytesIOundgzip.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 FunktionPy_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,bytearrayundarray.arraysowie viele gängige Objekte vom Typmemoryview. 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
bytearrayund einememoryvieweinesbytearray. Andere Operationen erfordern, dass die Binärdaten in unveränderlichen Objekten gespeichert sind („nur lesbare byteähnliche Objekte“); Beispiele hierfür sindbytesund einememoryvieweinesbytes-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
nonlocalexplizit definiert werden, um Schreibzugriff zu ermöglichen, oder implizit definiert werden, wenn die Variable nur gelesen wird.Zum Beispiel sind in der Funktion
innerim folgenden Code sowohlxals auchprintfreie Variablen, aber nurxist 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 alsiin der Mathematik oder alsjim 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 Suffixjgeschrieben, z. B.3+1j. Um Zugriff auf komplexe Entsprechungen des Modulsmathzu erhalten, verwenden Siecmath. 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
Der temporäre Zustand oder die Umgebung, die von einem Kontextmanager über eine
with-Anweisung eingerichtet wird.Die Sammlung von Schlüssel-Wert-Bindungen, die einem bestimmten
contextvars.Context-Objekt zugeordnet sind und überContextVar-Objekte abgerufen werden. Siehe auch Kontextvariable.Ein
contextvars.Context-Objekt. Siehe auch aktueller Kontext.
- Kontextverwaltungsprotokoll¶
Die Methoden
__enter__()und__exit__(), die von derwith-Anweisung aufgerufen werden. Siehe PEP 343.- Kontextmanager¶
Ein Objekt, das das Kontextverwaltungsprotokoll 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 defimplementiert werden. Siehe auch PEP 492.- coroutine function¶
Eine Funktion, die ein Coroutine-Objekt zurückgibt. Eine Coroutinen-Funktion kann mit der Anweisung
async defdefiniert werden und kann die Schlüsselwörterawait,async forundasync withenthalten. 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 vonContextVar-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 (sieheasyncio) 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 sindclassmethod()undstaticmethod().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üsselnmit dem Wertn ** 2zuordnet. Siehe Displays für Listen, Sets und Dictionaries.- dictionary view¶
Die Objekte, die von
dict.keys(),dict.values()unddict.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 Sielist(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()oderisinstance(). (Beachten Sie jedoch, dass Duck-Typing durch abstrakte Basisklassen ergänzt werden kann.) Stattdessen werden typischerweisehasattr()-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- undexcept-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
typeerstellt 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
foderFvorangestellt 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()oderwrite()) 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
iodefiniert. Der kanonische Weg, ein Datei-Objekt zu erstellen, ist die Verwendung der Funktionopen().- 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
UnicodeErrorauslösen.Die Funktionen
sys.getfilesystemencoding()undsys.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 Memberfilesystem_encodingundfilesystem_errorsvonPyConfig.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_pathund Pfad-Eintrags-Finder zur Verwendung mitsys.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 Ausdruck11 // 4zu2ausgewertet, im Gegensatz zu den2.75, die von der Fließkomma-Echtteilung zurückgegeben werden. Beachten Sie, dass(-11) // 4gleich-3ist, da dies-2.75abgerundet 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_freevarsmanchmal 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 einenint-Rückgabewert hatdef 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
gcgesteuert 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 Funktionnext()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
yieldunterbricht 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 optionaleif-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
listoderdict. 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-gildeaktiviert werden. Nach dem Erstellen von Python mit dieser Option muss der Code mit-X gil=0oder nach dem Setzen der UmgebungsvariablenPYTHON_GIL=0ausgefü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
TrueundNonein CPython unsterblich.Unsterbliche Objekte können über
sys._is_immortal()oder überPyUnstable_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
pythonohne 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 anhelp(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,strundtuple) und einige Nicht-Sequenztypen wiedict, 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 Funktioniter()ü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. Diefor-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 Funktionnext()) geben nacheinander Elemente aus dem Strom zurück. Wenn keine weiteren Daten verfügbar sind, wird stattdessen eineStopIteration-Ausnahme ausgelöst. Zu diesem Zeitpunkt ist das Iterator-Objekt erschöpft und alle weiteren Aufrufe seiner Methode__next__()lösen erneutStopIterationaus. 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 einelist) erzeugt jedes Mal einen frischen neuen Iterator, wenn Sie es an die Funktioniter()übergeben oder es in einerfor-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()unditertools.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 einemlambda-Ausdruck wielambda r: (r[0], r[2])erstellt werden. Auchoperator.attrgetter(),operator.itemgetter()undoperator.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 Klauselifist optional. Wenn sie weggelassen wird, werden alle Elemente inrange(256)verarbeitet.- loader¶
Ein Objekt, das ein Modul lädt. Es muss die Methoden
exec_module()undcreate_module()definieren, um die SchnittstelleLoaderzu 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- odercollections.abc.MutableMappingabstrakten Basisklassen spezifiziert sind. Beispiele hierfür sinddict,collections.defaultdict,collections.OrderedDictundcollections.Counter.- meta path finder¶
Ein Finder, der durch eine Suche in
sys.meta_pathzurückgegeben wird. Meta-Path-Finder sind mit Pfadeintrags-Findern verwandt, aber unterschiedlich zu ihnen.Siehe
importlib.abc.MetaPathFinderfü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
selfgenannt 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()undos.stat()zurückgegeben werden. Ein weiteres Beispiel istsys.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
tupleerbt und benannte Felder definiert. Eine solche Klasse kann von Hand geschrieben werden oder sie kann durch Erben vontyping.NamedTupleoder mit der Factory-Funktioncollections.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.openundos.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 vonrandom.seed()oderitertools.islice()deutlich, dass diese Funktionen von den Modulenrandombzw.itertoolsimplementiert 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__.pyhaben.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
nonlocalermö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_hookszurückgegeben wird (d. h. ein Pfad-Eintrag-Hook), der weiß, wie Module anhand eines Pfad-Eintrags gefunden werden können.Siehe
importlib.abc.PathEntryFinderfü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- oderbytes-Objekt, das einen Pfad repräsentiert, oder ein Objekt, das dasos.PathLike-Protokoll implementiert. Ein Objekt, das dasos.PathLike-Protokoll unterstützt, kann durch Aufrufen der Funktionos.fspath()in einenstr- oderbytes-Dateisystempfad konvertiert werden;os.fsdecode()undos.fsencode()können verwendet werden, um stattdessen einstr- oderbytes-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 sindlist,str,tupleundbytes. Beachten Sie, dassdictebenfalls__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.Sequencedefiniert eine viel reichhaltigere Schnittstelle, die über__getitem__()und__len__()hinausgeht undcount(),index(),__contains__()und__reversed__()hinzufügt. Typen, die diese erweiterte Schnittstelle implementieren, können explizit mitregister()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. beivariablen_name[1:3:5]. Die Klammer- (Subskript-) Notation verwendet internslice-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_namesfü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,whileoderfor.- 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 mitPy_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 FunktionPy_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
toderTvorangestellt 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+0000–U+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.stdoutund Instanzen vonio.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
tokenizestellt den lexikalischen Analysator von Python bereit. Das Modultokenenthä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 mittype(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
typingund 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
typingund 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, sowiebytes.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 annimmtcount: 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.