Glossar¶
- Argument¶
Ein Wert, der einer Funktion übergeben wird. Es gibt zwei Arten von Argumenten:
- Schlüsselwortargument
ein Argument, dem ein Bezeichner (z.B.
name=
) in einem Funktionsaufruf vorangestellt ist oder das als Wert in einem Wörterbuch übergeben wird, dem**
vorangestellt ist.- Positionsargument
ein Argument, das kein Schlüsselwortargument ist. Positionsargumente können am Anfang einer Argumentliste stehen und/oder als Elemente einer Iteration mit vorangestelltem
*
übergeben werden.
assert
¶Ein Schlüsselwort, das die Codeausführung anhält, wenn sein Argument falsch ist.
- Ausnahme¶
- Ausnahmebehandlung¶
- Exception¶
Eine Ausnahme (englisch exception) reicht bestimmte Programmzustände – meistens Fehlerzustände – an andere Programmebenen weiter. Sie ist eine anpassbare Form von assert.
- Blackbox-Test¶
wird ohne Kenntnis des Quellcodes entwickelt. Neben Unittest kann in Python auch Hypothesis für solche Tests verwendet werden.
- build¶
build
ist ein PEP 517-kompatibler Python-Paket-Builder. Er bietet eine CLI zum Erstellen von Paketen sowie eine Python-API.- Built Distribution¶
- bdist¶
Eine Struktur aus Dateien und Metadaten, die bei der Installation nur an den richtigen Speicherort auf dem Zielsystem verschoben werden müssen. wheel ist ein solches Format, nicht jedoch distutil’s Source Distribution, die einen Build-Schritt erfordern.
- cibuildwheel¶
cibuildwheel ist ein Python-Paket, das wheels für alle gängigen Plattformen und Python-Versionen auf den meisten CI-Systemen erstellt.
Siehe auch
- conda¶
Paketmanagement-Tool für die Anaconda-Distribution. Sie ist speziell auf die wissenschaftliche Gemeinschaft ausgerichtet, insbesondere auf Windows, wo die Installation von binären Erweiterungen oft schwierig ist.
Conda installiert keine Pakete von PyPI und kann nur von den offiziellen Continuum-Repositories oder von anaconda.org oder lokalen (z.B. Intranet-) Paketservern installieren.
- Continuous Integration¶
- CI¶
- Kontinuierliche Integration¶
Automatisches Überprüfen des Erstellungs- und Testprozesses auf verschiedenen Plattformen.
- Dekorator¶
- Decorator¶
Eine Funktion, die eine andere Funktion zurückgibt, normalerweise als Funktionstransformation unter Verwendung der
@wrapper
-Syntax angewandt. Übliche Beispiele für Dekoratoren sind Klassenmethoden und Statische Methoden.Siehe auch
- devpi¶
devpi ist ein leistungsstarker PyPI-kompatibler Server und ein PyPI-Proxy-Cache mit einem Befehlszeilenwerkzeug um Paketierungs-, Test- und Veröffentlichungsaktivitäten zu ermöglichen.
- Distribution Package¶
Eine versionierte Archivdatei, die Python-Pakete, -Module und andere Ressourcendateien enthält, die zum Verteilen eines Releases verwendet werden.
- distutils¶
Paket der Python-Standardbibliothek, das Unterstützung für das Bootstrapping von pip in eine bestehende Python-Installation oder virtuelle Umgebung bietet.
- Docstring¶
Ein string-Literal, das als erster Ausdruck in einer Klasse, Funktion oder einem Modul erscheint. Es wird vom Python-Compiler erkannt und in das
__doc__
-Attribut der umschließenden Klasse, Funktion oder des Moduls aufgenommen.Siehe auch
- Duck-Typing¶
Programmierstil, bei dem nicht der Typ eines Objekts untersucht wird, um festzustellen, ob es die richtige Schnittstelle hat, sondern stattdessen die Methode oder das Attribut einfach aufgerufen wird.
„Wenn es wie eine Ente aussieht und wie eine Ente quakt, muss es eine Ente sein.“
Durch die Betonung von Schnittstellen anstelle spezifischer Typen verbessert gut gestalteter Code seine Flexibilität, indem er polymorphe Substitution ermöglicht. Duck-Typing vermeidet Tests mit
type
oderisinstance()
und verwendet stattdessen typischerweisehasattr()
-Tests oder EAFP-Programmierung.Siehe auch
- Dummy¶
Objekt, das herumgereicht, aber nie wirklich benutzt wird. Normalerweise werden Dummies nur zum Füllen von Parameter-Listen verwendet.
- Dynamische Testverfahren¶
dienen dem Auffinden von Fehlern beim Ausführen des Quellcodes. Dabei wird zwischen Whitebox- und Blackbox-Tests unterschieden.
- EAFP¶
Easier to ask for forgiveness than permission (englisch: Es ist einfacher, um Vergebung zu bitten als um Erlaubnis). Dieser gängige Python-Stil geht von der Existenz gültiger Schlüssel oder Attribute aus und fängt Ausnahmen ab, wenn sich diese Annahme als falsch erweist. Er zeichnet sich durch viele try- und except-Anweisungen aus. Diese Technik steht im Gegensatz zum LBYL-Stil, der in vielen anderen Sprachen wie C üblich ist.
- Egg¶
Ein Built Distribution-Format, das von Setuptools eingeführt wurde und nun durch wheel ersetzt wird. Weitere Informationen findet ihr unter The Internal Structure of Python Eggs und Python Eggs.
- enscons¶
enscons ist ein Python-Paketierungswerkzeug, das auf SCons basiert. Es erstellt pip-kompatible Source Distributions und wheels ohne Verwendung von distutils oder setuptools, einschließlich Distributionen mit C-Erweiterungen. enscons hat eine andere Architektur und Philosophie als distutils, da es Python-Paketierung zu einem allgemeinen Build-System hinzufügt. enscons kann euch helfen, sdists und wheels zu bauen.
except
¶Schlüsselwort, das verwendet wird, um eine Exception abzufangen und sorgfältig zu behandeln.
- F-String¶
String-Literal, denen ein
f
oderF
vorangestellt ist.- Fake¶
Objekt, das eine tatsächlich funktionierende Implementierung hat, in der Regel aber eine Abkürzung nimmt, die es nicht für die Produktion geeignet macht.
- Flit¶
Flit bietet eine einfache Möglichkeit, reine Python-Pakete und -Module zu erstellen und auf den Python Package Index hochzuladen. Flit kann eine Konfigurationsdatei generieren, um schnell ein Projekt einzurichten, eine Source Distribution und ein wheel zu erstellen und sie zu PyPI hochzuladen.
Flit verwendet pyproject.toml, um ein Projekt zu konfigurieren. Flit ist nicht auf Werkzeuge wie setuptools angewiesen, um Distributionen zu erstellen, oder auf twine, um sie auf PyPI hochzuladen.
- Funktion¶
Eine Reihe von Anweisungen, die einen Wert zurückgibt. Ihr können auch null oder mehr Argumente übergeben werden, die bei der Ausführung des Hauptteils verwendet werden können.
Siehe auch
- Garbage Collection¶
Prozess der Freigabe von Speicher, wenn dieser nicht mehr verwendet wird.
Siehe auch
- Hatch¶
Hatch ist ein Kommandozeilenwerkzeug, das ihr zum Konfigurieren und Versionieren von Paketen, zum Spezifizieren von Abhängigkeiten genutzt werden kann. Das Plugin-System ermöglicht die einfache Erweiterung der Funktionalitäten.
- hatchling¶
Build-Backend von Hatch, das auch zum Veröffentlichen auf dem Python Package Index genutzt werden kann.
- Import Package¶
Ein Python-Modul, das andere Module oder rekursiv andere Pakete enthalten kann.
- Integrationstest¶
Tests, die überprüfen, ob die verschiedenen Teile der Software wie erwartet zusammenarbeiten.
- Konstante¶
Python hat zwar unveränderliche Objekte, aber keine konstanten Variablen. Variablen verweisen auf Objekte, es gibt jedoch keine Möglichkeit, zu verhindern, dass eine neue Zuweisung erfolgt.
- Kontrollfluss¶
- Control flow¶
Zeitliche Abfolge der einzelnen Befehle eines Computerprogramms.
Siehe auch
- LBYL¶
Look before you leap (englisch: Schaue, bevor du springst). Bei diesem Stil werden vor dem Aufruf explizit die Vorbedingungen geprüft. Dieser Stil steht im Gegensatz zum EAFP-Ansatz und ist durch das Vorhandensein vieler
if
-Anweisungen gekennzeichnet.- maturin¶
Vormals pyo3-pack, ist ein PEP 621-kompatibles Build-Tool für binäre Erweiterungen in Rust.
- meson-python¶
Build-Backend, das das Meson-Build-System verwendet. Es unterstützt eine Vielzahl von Sprachen, einschließlich C, und ist in der Lage, die Anforderungen der meisten komplexen Build-Konfigurationen zu erfüllen.
- Methode¶
Eine Funktion, die innerhalb einer Klasse definiert ist. Wenn sie als Attribut einer Instanz dieser Klasse aufgerufen wird, erhält die Methode das Instanzobjekt als erstes Argument (das normalerweise
self
heißt).- Mock¶
Objekte, die mit Exception programmiert sind, die eine Spezifikation der Aufrufe bilden, die ihr voraussichtlich erhalten werdet.
Siehe auch
- Modul¶
Ein Objekt, das als organisatorische Einheit von Python-Code dient. Module haben einen Namensraum, der beliebige Python-Objekte enthält. Sie werden durch Importieren in Python geladen.
Python-Module können in zwei verschiedenen Varianten existieren:
- Pure Module
Ein Modul, das in Python geschrieben wurde und in einer einzigen
.py
-Datei enthalten ist (und möglicherweise zugehörigen.pyc
- und/oder.pyo
-Dateien).- Extension Module
In der Regel in eine einzelne dynamisch ladbare vorkompilierte Datei, z.B. einer gemeinsamen Objektdatei (
.so
).
Siehe auch
- multibuild¶
multibuild
ist ein Satz von CI-Skripten zum Erstellen und Testen von Python-wheels für Linux, macOS und Windows.Siehe auch
- Parameter¶
Argument einer Funktions- (oder Methoden-) Definition.
Siehe auch
- pdm¶
Python-Paketmanager mit PEP 582-Unterstützung. Er installiert und verwaltet Pakete ohne dass eine virtuelle Umgebung erstellt werden muss. Er verwendet auch pyproject.toml, um Projekt-Metadaten zu speichern, wie in PEP 621 definiert.
- pex¶
Bibliothek und Werkzeug zur Erzeugung von Python Executable (
.pex
)-Dateien, die eigenständige Python-Umgebungen sind..pex
-Dateien sind Zip-Dateien mit#!/usr/bin/env python
und einer speziellen__main__.py
-Datei, die das Deployment von Python-Applikationen stark vereinfachen können.- pip¶
Beliebtes Werkzeug für die Installation von Python-Paketen, das in neuen Versionen von Python enthalten ist.
Es bietet die wesentlichen Kernfunktionen zum Suchen, Herunterladen und Installieren von Paketen aus dem Python Package Index und andere Python-Paketverzeichnissen und kann über eine Befehlszeilenschnittstelle (CLI) in eine Vielzahl von Entwicklungsabläufen eingebunden werden.
- pip-tools¶
Reihe von Werkzeugen, die eure Builds deterministisch halten und dennoch mit neuen Versionen eurer Abhängigkeiten auf dem Laufenden halten können.
- Pipenv¶
Pipenv bündelt Pipfile, pip und virtualenv in einer einzigen Toolchain. Es kann die
requirements.txt
automatisch importieren und mithilfe von safety die Umgebung auch auf CVEs prüfen. Schließlich erleichtert es auch die Deinstallation von Paketen und deren Abhängigkeiten.- Pipfile¶
- Pipfile.lock¶
Pipfile
undPipfile.lock
sind eine übergeordnete, anwendungsorientierte Alternative zu pip’srequirements.txt
-Datei. Die PEP 508 Environment Markers werden ebenfalls unterstützt.- pipx¶
pipx unterstützt euch, Abhängigkeitskonflikte mit anderen auf dem System installierten Paketen zu vermeiden.
- piwheels¶
Website und zugrundeliegende Software, die Source Distribution-Pakete von PyPI holt und sie in binäre wheels kompiliert, die für die Installation auf Raspberry Pis optimiert sind.
- poetry¶
Eine All-in-One-Lösung für reine Python-Projekte. Es ersetzt setuptools, venv/pipenv, pip, wheel und twine. Sie macht jedoch einige schlechte Standardannahmen für Bibliotheken und die pyproject.toml-Konfiguration ist nicht standardkonform.
- pybind11¶
Dies ist setuptools, aber mit einer C++-Erweiterung und von cibuildwheel generierten wheels.
- pypi.org¶
pypi.org ist der Domain-Name für den Python Package Index (PyPI). Er löste 2017 den alten Index-Domain-Namen
pypi.python.org
ab. Er wird von warehouse unterstützt.- pyproject.toml¶
Werkzeugunabhängige Datei zur Spezifikation von Projekten, die in PEP 518 definiert ist.
Siehe auch
- pytest¶
Ein Python-Paket mit Test-Utilities.
Siehe auch
- Python Package Index¶
- PyPI¶
pypi.org ist der Standard-Paket-Index für die Python-Community. Alle Python-Entwickler können ihre Distributionen nutzen und verteilen.
- Python Packaging Authority¶
- PyPA¶
Die Python Packaging Authority ist eine Arbeitsgruppe, die mehrere Softwareprojekte für die Paketierung, Verteilung und Installation von Python-Bibliotheken verwaltet. Die in PyPA Goals genannten Ziele sind jedoch noch während der Diskussionen um PEP 516, PEP 517 und PEP 518 entstanden, die mit dem pyproject.toml-basierten Build-System konkurrierende Workflows erlaubten, die nicht interoperabel sein müssen.
- readme_renderer¶
readme_renderer
ist eine Bibliothek, die verwendet wird, um Dokumentation aus Auszeichnungssprachen wie Markdown oder reStructuredText in HTML zu rendern. Ihr könnt sie verwenden, um zu prüfen, ob eure Paketbeschreibungen auf PyPI korrekt angezeigt werden.- Regressionstest¶
Tests zum Schutz vor neuen Fehlern oder Regressionen, die durch neue Software und Updates auftreten können.
- Release¶
Der Snapshot eines Projekts zu einem bestimmten Zeitpunkt, gekennzeichnet durch eine Versionskennung.
Eine Veröffentlichung kann mehrere Built Distributions zur Folge haben.
- scikit-build¶
Build-System-Generator für
C
-,C++
-,Fortran
- undCython
-Erweiterungen, der setuptools, wheel und pip integriert. Er verwendet internCMake
, um eine bessere Unterstützung für zusätzliche Compiler, Build-Systeme, Cross-Compilation und das Auffinden von Abhängigkeiten und deren zugehörigen Build-Anforderungen zu bieten. Um die Erstellung großer Projekte zu beschleunigen und zu parallelisieren, kann zusätzlich Ninja installiert werden.- setuptools¶
setuptools sind das klassische Build-System, das sehr leistungsfähig ist, aber mit steiler Lernkurve und hohem Konfigurationsaufwand. Ab Version 61.0.0 unterstützen die setuptools auch pyproject.toml-Dateien.
Siehe auch
- shiv¶
Kommandozeilenprogramm zur Erstellung von Python-Zip-Apps, wie sie in PEP 441 beschrieben sind, aber zusätzlich mit allen Abhängigkeiten.
- Singleton-Objekt¶
Eine Singleton-Klasse kann nur eine Instanz von sich selbst erzeugen. None ist ein Beispiel für eine Singleton-Klasse in Python.
- Source Distribution¶
- sdist¶
Ein Verteilungsformat (das normalerweise mithilfe von
python setup.py sdist
generiert wird).Es stellt Metadaten und die wesentlichen Quelldateien bereit, die für die Installation mit einem Tool wie Pip oder zum Generieren von Built Distributions benötigt werden.
- Spack¶
Flexibler Paketmanager, der mehrere Versionen, Konfigurationen, Plattformen und Compiler unterstützt. Beliebig viele Versionen von Paketen können auf demselben System koexistieren. Spack wurde für die schnelle Erstellung von wissenschaftlichen Hochleistungsanwendungen auf Clustern und Supercomputern entwickelt.
- Statische Testverfahren¶
werden verwendet um den Quellcode zu überprüfen, wobei dieser jedoch nicht ausgeführt wird. Sie unterteilen sich in
- Stubs¶
liefern vorgefertigte Antworten auf Aufrufe, die während des Tests getätigt werden, und reagieren in der Regel überhaupt nicht auf irgendetwas, das nicht für den Test programmiert wurde.
- Test-driven development¶
- TDD¶
- Testgetriebene Entwicklung¶
Eine Software-Entwicklungsstrategie, bei der die Tests vor dem Code geschrieben werden.
- trove-classifiers¶
trove-classifiers sind zum einen Klassifikatoren, die im Python Package Index verwendet werden, um Projekte systematisch zu beschreiben und besser auffindbar zu machen. Zum anderen sind sie ein Paket, das eine Liste gültiger und veralteter Klassifikatoren enthält, das zur Überprüfung verwendet werden kann.
try
¶Ein Schlüsselwort, das einen Teil des Codes schützt, der eine Exception auslösen kann.
- twine¶
Kommandozeilenprogramm, das Programmdateien und Metadaten an eine Web-API übergibt. Damit lassen sich Python-Pakete auf den Python Package Index hochladen.
- Unveränderlich¶
- Immutable¶
Ein Objekt, das nicht verändert (d.h. mutiert) werden kann. Der Wert eines unveränderlichen Objekts kann sich nicht ändern. Tupel sind Beispiele für unveränderliche Objekte.
- uv¶
Ein extrem schneller Python-Paket- und Projektmanager, geschrieben in Rust.
uv vereinfacht Entwicklung und Deployment von Python-Projekten erheblich:
Pakete erstellen und auf PyPI oder GitLab veröffentlichen
Testen von Bibliotheken mit verschiedenen Python-Versionen und tox-uv
Reproduzieren und aktualisieren der Python-Umgebung, ggf. auch mit einem Dependency-Bot
Schwachstellen überprüfen mit uv-secure
- venv¶
Paket, das ab Python ≥ 3.3 in der Python-Standardbibliothek ist und zur Erstellung virtueller Umgebungen gedacht ist.
- virtualenv¶
Werkzeug, das die Befehlszeilen-Umgebungsvariable
path
verwendet, um isolierte virtuelle Python-Umgebungen zu erstellen, ähnlich wie venv. Es bietet jedoch zusätzliche Funktionalität für die Konfiguration, Wartung, Duplizierung und Fehlerbehebung.Ab Version 20.22.0 unterstützt virtualenv nicht mehr die Python-Versionen 2.7, 3.5 und 3.6.
- Virtuelle Umgebung¶
Eine isolierte Python-Umgebung, die die Installation von Paketen für eine bestimmte Anwendung ermöglicht, anstatt sie systemweit zu installieren.
Siehe auch
- Warehouse¶
Die aktuelle Codebasis, die den Python Package Index (PyPI) antreibt. Sie wird auf pypi.org gehostet.
- wheel¶
Distributionsformat, das mit PEP 427 eingeführt wurde. Es soll das Egg-Format ersetzen und wird von aktuellen pip-Installationen unterstützt.
C-Erweiterungen können als plattformspezifische wheels für Windows, macOS und Linux auf dem PyPI bereitgestellt werden. Dies hat für euch den Vorteil, dass ihr bei der Installation des Pakets dieses nicht kompilieren zu müssen.
Siehe auch
- whey¶
Einfacher Python-wheel-Builder mit Automatisierungsoptionen für trove-classifiers.
- Whitebox-Test¶
wird unter Kenntnis des Quellcodes und der Software-Struktur entwickelt.
In Python stehen euch verschiedene Module zur Verfügung:
- Unittest
unterstützt euch bei der Automatisierung von Tests.
- Mock
erlaubt euch das Erstellen und Verwenden von Mock-Objekten.
- Doctest
ermöglicht das Testen von in Python Docstrings geschriebenen Tests.
- tox
ermöglicht das Testen in verschiedenen Umgebungen.
- Zen of Python¶
Auflistung von Python-Designprinzipien und -Philosophien, die für das Verständnis und die Verwendung der Sprache hilfreich sind. Die Liste kann durch Eingabe von
import this
ausgegeben werden.