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.

Siehe auch

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.

Bemerkung

pip kann in conda installiert werden und Seite an Seite arbeiten kann, um Distributionen von PyPI zu verwalten.

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.

Siehe auch

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.

Siehe auch

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 oder isinstance() und verwendet stattdessen typischerweise hasattr()-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.

Siehe auch

except

Schlüsselwort, das verwendet wird, um eine Exception abzufangen und sorgfältig zu behandeln.

F-String

String-Literal, denen ein f oder F vorangestellt ist.

Siehe auch

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.

Siehe auch

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.

Siehe auch

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.

Siehe auch

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

multibuild

multibuild ist ein Satz von CI-Skripten zum Erstellen und Testen von Python-wheels für Linux, macOS und Windows.

Siehe auch

cibuildwheel

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.

Siehe auch

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.

Siehe auch

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.

Siehe auch

pip-tools

Reihe von Werkzeugen, die eure Builds deterministisch halten und dennoch mit neuen Versionen eurer Abhängigkeiten auf dem Laufenden halten können.

Siehe auch

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.

Siehe auch

Pipfile
Pipfile.lock

Pipfile und Pipfile.lock sind eine übergeordnete, anwendungsorientierte Alternative zu pip’s requirements.txt-Datei. Die PEP 508 Environment Markers werden ebenfalls unterstützt.

Siehe auch

pipx

pipx unterstützt euch, Abhängigkeitskonflikte mit anderen auf dem System installierten Paketen zu vermeiden.

Siehe auch

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.

Siehe auch

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.

Siehe auch

pybind11

Dies ist setuptools, aber mit einer C++-Erweiterung und von cibuildwheel generierten wheels.

Siehe auch

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.

Siehe auch

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- und Cython-Erweiterungen, der setuptools, wheel und pip integriert. Er verwendet intern CMake, 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.

Siehe auch

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.

shiv

Kommandozeilenprogramm zur Erstellung von Python-Zip-Apps, wie sie in PEP 441 beschrieben sind, aber zusätzlich mit allen Abhängigkeiten.

Siehe auch

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.

Siehe auch

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.

Siehe auch

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.

Siehe auch

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:

Siehe auch

venv

Paket, das ab Python ≥ 3.3 in der Python-Standardbibliothek ist und zur Erstellung virtueller Umgebungen gedacht ist.

Siehe auch

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.

Warehouse

Die aktuelle Codebasis, die den Python Package Index (PyPI) antreibt. Sie wird auf pypi.org gehostet.

Siehe auch

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

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.