Python Symbole mit sieben aufsteigenden Zahlen.

7 Python Built-ins, die Sie unterschätzen könnten (bis Sie sie benutzen)

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

You May Also Like