Versteckten Funktionen in Python

Die versteckten Funktionen von Python erforschen

Python ist eine leistungsstarke Programmiersprache, die leicht zu erlernen ist und mit der es Spaß macht, zu spielen. Neben den Grundlagen gibt es aber auch viele versteckte Funktionen und Tricks, die helfen können, effizienteren und effektiveren Python-Code zu schreiben.
Diese Funktionen können nützlich sein und helfen, effizienteren und besser lesbaren Code zu schreiben. Sie können aber auch etwas schwierig zu entdecken sein, wenn man nicht weiß, wo man suchen muss.

In den nächsten Abschnitten werfen wir einen Blick auf ein paar Funktionen, die sowohl hilfreich als auch nicht so bekannt sind unter Python-Programmierern.

Der _ (Unterstrich) in Python

Einer der verborgenen Schätze von Python ist der Unterstrich (_). Es ist ein vielseitiges Zeichen, das in Python-Code auf verschiedene Weise verwendet werden kann.

Erstens kann er als Variable in Python verwendet werden. Er wird oft als Wegwerfvariable verwendet, d. h. eine Variable, die deklariert wird, deren Wert aber nicht tatsächlich verwendet wird.

for _ in range(5):
    print("Hello, World!")

Im obigen Code wird die Variable _ nirgendwo verwendet, sie ist nur da, weil die Syntax der for-Schleife eine Variable erfordert.

Zweitens wird _ verwendet, um spezifische Werte zu ignorieren. Wenn man spezifische Werte nicht benötigt, weist man die Werte einfach dem Unterstrich zu.

# Werte beim Entpacken ignorieren
x, _, y = (1, 2, 3) # x = 1, y = 3

Hier brauchen wir sowohl die x- als auch die y-Variablen, aber die Python-Syntax lässt es nicht zu, dass wir sie ohne etwas dazwischen deklarieren, also verwenden wir den Unterstrich.

In der Python-Konsole schließlich steht _ für den zuletzt ausgeführten Ausdruckswert.
Alerdings ist hier zu beachten, dass die Verwendung von _ zum Speichern des letzten Wertes nur spezifisch für den interaktiven Interpreter verwendet werden kann, dies funktioniert nicht in Skripten!

>>> 10 + 20
30
>>> _
30

Ellipsis

Die Ellipse in Python ist eine einzigartige Funktion, die in anderen Programmiersprachen nicht üblich ist. Sie wird durch drei aufeinanderfolgende Punkte (…) dargestellt und ist eigentlich eine eingebaute Konstante in Python. Man wird sich vielleicht fragen, wofür diese Konstante verwendet werden kann. Schauen wir uns einige seiner Anwendungen an.

Die Ellipse in Python kann als Platzhalter für Code verwendet werden. Das kann sehr nützlich sein, wenn man eine Programmstruktur skizziert, aber noch nicht alle Teile implementiert haben. Zum Beispiel:

def my_func():
    ...
    # TODO: Funktion ist noch zu implementieren

Hier zeigt die Ellipse an, dass my_func unvollständig ist und implementiert werden muss.

Die Ellipse in Python spielt auch eine Rolle bei der Aufteilung mehrdimensionaler Arrays, insbesondere in Data-Science-Bibliotheken wie NumPy. Hier sieht man, wie man sie verwenden kann:

import numpy as np

# Create a 3D array
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

# Use ellipsis to access elements
print(arr[..., 2])

Dies ergibt folgende Ausgabe:

[[ 3  6]
 [ 9 12]]

In diesem Fall wird die Ellipse verwendet, um auf das dritte Element jedes Unterarrays in unserem 3D-Array zuzugreifen.

Die dir-Funktion

Die Funktion dir() ist eine weitere versteckte Perle in Python. Sie ist eine mächtige eingebaute Funktion, die eine Liste von Namen im aktuellen lokalen Bereich oder eine Liste von Attributen eines Objekts zurückgibt.

Wenn sie ohne ein Argument verwendet wird, gibt dir() eine Liste von Namen im aktuellen lokalen Bereich zurück. Hier ist ein Beispiel:

x = 1
y = 2
print(dir())

Dies führt zur Ausgabe:

['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'x', 'y']

Hier sind x und y die Variablen, die wir definiert haben, und der Rest sind eingebaute Namen in Python.

Bei Verwendung mit einem Objekt als Argument gibt dir() eine Liste der Attribute des Objekts zurück. Wenn wir es zum Beispiel mit einem String-Objekt verwenden:

print(dir(‚Hello, StackAbuse!‘))

Erhält man:

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', 
'__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__',
'__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize',
'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index',
'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable',
'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind',
'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
'translate', 'upper', 'zfill']

Dies sind alle Methoden, die man mit einem String-Objekt verwenden kann. dir() ist eine praktische Funktion, wenn man Python-Objekte erkunden und ihre Fähigkeiten verstehen will.

Verkettung von Vergleichsoperatoren

In Python kann man Vergleichsoperatoren auf eine intuitive und leicht lesbare Weise verketten. Das kann eine echte Zeitersparnis sein, wenn man komplexe Vergleiche schreibt.

Nehmen wir zum Beispiel an, man möchte prüfen, ob eine Zahl zwischen 1 und 10 liegt. Anstatt zwei separate Vergleiche zu schreiben und sie mit dem Operator ‚and‘ zu kombinieren, kann man folgendes schreiben:

x = 5
print(1 < x < 10)

In diesem Beispiel ist 1 < x < 10 gleichbedeutend mit 1 < x und x < 10. Python prüft beide Vergleiche und gibt True zurück, wenn beide wahr sind, so als ob man den Operator ‚and‘ verwendet hätte.

Context Manager und die „with“-Anweisung

In Python sind Kontextmanager ein verstecktes Juwel, das bei der Verwaltung von Ressourcen sehr nützlich sein kann. Sie ermöglichen, dass man Ressourcen genau dann zuzuweisen und freigeben kann, wenn man es möchte. Das am häufigsten verwendete Beispiel für Kontextmanager ist die with-Anweisung.funktionoper

with open('hello.txt', 'w') as f:
    f.write('Hello, World!')

In diesem Beispiel wird die with-Anweisung verwendet, um eine Datei zu öffnen und sie der Variablen f zuzuweisen. Die Datei wird für die Dauer des with-Blocks offen gehalten und am Ende automatisch geschlossen, auch wenn innerhalb des Blocks Ausnahmen (Exceptions) auftreten. Dadurch wird sichergestellt, dass die Aufräumarbeiten automatisch erledigt werden.