Python ist eine vielseitige Programmiersprache, die für ihre umfangreichen integrierten Funktionen bekannt ist, die besonders in der Datenwissenschaft nützlich sind. Während gängige Funktionen wie len() und range() weit verbreitet sind, gibt es eine Reihe von weniger bekannten, aber äußerst nützlichen integrierten Funktionen, die oft übersehen werden. Dieser Artikel beleuchtet sieben dieser Funktionen, die auf den ersten Blick wie ein Scherz wirken mögen, sich aber bei näherer Betrachtung als unverzichtbar für effizientes Programmieren erweisen.
Wichtige Erkenntnisse
divmod(): Kombiniert Ganzzahldivision und Modulo-Operation.slice(): Ermöglicht die Erstellung wiederverwendbarer Slice-Objekte.iter(): Erzeugt Iterator-Objekte für sequenzielle Verarbeitung.memoryview(): Bietet Zugriff auf Speicher ohne Kopieren, ideal für große Binärdaten.any(): Prüft, ob mindestens ein Element in einem Iterable wahr ist.all(): Prüft, ob alle Elemente in einem Iterable wahr sind.zip(): Aggregiert Elemente aus mehreren Iterables zu Tupeln.
Die divmod() Funktion
Die divmod()-Funktion ist vielen Nutzern unbekannt oder wird als unnötig erachtet, da man die Operationen auch einzeln mit // und % durchführen kann. Sie gibt jedoch sowohl das Ergebnis der Ganzzahldivision als auch den Rest zurück. Dies ist besonders nützlich für Zeitkonvertierungen, Paginierung oder Batch-Verarbeitung, da es die Berechnung beschleunigt und den Code übersichtlicher macht.
total_seconds = 7132
minutes, seconds = divmod(total_seconds, 60)
hours, minutes = divmod(minutes, 60)
print(f"Zeit: {hours:02d}:{minutes:02d}:{seconds:02d}")
Die slice() Funktion
Mit slice() können Sie Slice-Objekte erstellen, die dann auf verschiedene Sequenzen angewendet werden können. Dies ist nützlich, um konsistente Parsing-Logiken zu gewährleisten und Datenverarbeitungsstrategien zu entwickeln. Anstatt wiederholt komplexe Slices zu definieren, können Sie ein slice-Objekt erstellen und es beliebig oft wiederverwenden.
evens = slice(0, None, 2)
text = "abcdefghij"
print(text[evens])
Die iter() Funktion
Die iter()-Funktion erstellt Iterator-Objekte, die Elemente sequenziell verarbeiten. Dies kann den Code für die Datenverarbeitung, insbesondere bei Streaming-Daten, sauberer und strukturierter gestalten, indem es das übliche while True mit break ersetzt.
import io
f = io.BytesIO(b"12345678")
for block in iter(lambda: f.read(3), b""):
print(block)
Die memoryview() Funktion
memoryview() ermöglicht den Zugriff auf interne Daten, ohne diese zu kopieren. Dies ist besonders vorteilhaft bei der Verarbeitung großer Binärdaten, da es erlaubt, Daten direkt im Speicher zu modifizieren, was die Leistung verbessert.
buf = bytearray(b"hello")
mv = memoryview(buf)
mv[0] = ord('H')
print(buf)
mv[:] = b"HELLO"
print(buf)
Die any() Funktion
Die any()-Funktion gibt True zurück, wenn mindestens ein Element in einem Iterable wahr ist. Sie vermeidet die Erstellung temporärer Objekte und nutzt Lazy Evaluation mit Generatoren, was zu einer Reduzierung des Speicherverbrauchs führt und die Lesbarkeit von Schleifen verbessert.
files = ["report.txt", "sales.csv", "notes.md"]
print(any(f.endswith(".csv") for f in files))
Die all() Funktion
Ähnlich wie any(), gibt all() True zurück, wenn alle Elemente in einem Iterable wahr sind. Sie bietet eine deklarative und kurzschließende Überprüfung, die den Code sauberer und speichereffizienter macht, insbesondere bei der Validierung von Datenschemata.
required = ["id", "name", "email"]
record = {"id": 1, "name": "Ana", "email": "a@x.io"}
print(all(k in record for k in required))
Die zip() Funktion
Die zip()-Funktion aggregiert Elemente aus mehreren Iterables zu Tupeln. Sie ist äußerst nützlich für die parallele Iteration über Datensätze oder paarweise Berechnungen, ohne sich mit Indexverwaltung herumschlagen zu müssen, und vermeidet unnötige Speicherallokationen.
keys = ["id", "name", "email"]
vals = [1, "Ana", "a@x.io"]
record = dict(zip(keys, vals))
print(record)
Diese integrierten Funktionen sind mächtige Werkzeuge, die die Produktivität von Python-Entwicklern erheblich steigern können, sobald ihre Nützlichkeit erkannt wird.