1.1 Liste beliebter eingebauter Funktionen
Wir haben schon viele eingebaute Funktionen kennengelernt, aber ich möchte noch ein paar erwähnen, die in naher Zukunft nützlich sein könnten:
id()
hash()
dir()
Im Folgenden ein bisschen mehr zu ihnen:
Funktion id()
Die Funktion id()
gibt eine eindeutige
Objektkennung (eine Zahl) zurück. Diese Kennung
ist eine Ganzzahl und bleibt während der Existenz des Objekts eindeutig. Normalerweise
entspricht die Kennung der Adresse des Objekts im Speicher, obwohl das
in der Python-Spezifikation nicht garantiert wird.
Die eindeutige Kennung eines Objekts kann genutzt werden, um viele Operationen besser zu verstehen, zum Beispiel zu erkennen, wo Objekte dupliziert werden und wo wir Referenzen auf dasselbe Objekt haben. Gleiche Objekte haben unterschiedliche Kennungen, aber Referenzen auf dasselbe Objekt zeigen dieselbe Kennung.
Kann während des Debugging hilfreich sein, um zu verstehen, wie Python Objekte im Speicher verwaltet.
a = [1, 2, 3]
b = a
print(id(a)) # Gibt die Kennung des Objekts 'a' aus
print(id(b)) # Gibt dieselbe Kennung aus, da 'b' auf dasselbe Objekt verweist
Funktion hash()
Die Funktion hash()
gibt einen Hash-Wert (eine Zahl) für
ein angegebenes Objekt zurück, sofern es hashbar ist. Hashbare Objekte
in Python müssen unveränderlich sein und einen konstanten Hash-Wert
über ihre Lebensdauer haben.
Beispiele für solche Objekte sind Zahlen, Zeichenketten und Tupel (wenn alle ihre Elemente ebenfalls hashbar sind). Hash-Werte werden in Dictionaries und Sets für schnelle Suchen verwendet. Sie werden zur Optimierung von Such- und Speichervorgängen eingesetzt, wenn schnelle Überprüfungen der Gleichheit und Einzigartigkeit erforderlich sind.
print(hash("hello")) # Gibt den Hash-Wert der Zeichenkette "hello" zurück
print(hash(42)) # Gibt den Hash-Wert der Zahl 42 zurück
print(hash((1, 2, 3))) # Gibt den Hash-Wert des Tupels (1, 2, 3) zurück
Wichtig!
Hash-Werte unveränderbarer
Objekte bleiben während ihrer Lebensdauer konstant. Veränderbare
Objekte wie Listen und Dictionaries sind nicht hashbar und können
nicht als Schlüssel in Dictionaries oder als Elemente von Sets
verwendet werden.
Funktion dir()
Die Funktion dir()
gibt eine Liste von Attributen und
Methoden eines Objekts zurück. Wenn kein Objekt angegeben ist,
gibt dir()
die Namen in der aktuellen lokalen
Namespace zurück. Diese Funktion ist nützlich, um die Struktur
von Objekten und ihre Attribute zu erkunden.
Verwendet, um eine Liste aller Attribute und Methoden eines Objekts zu erhalten, was das Verständnis seiner Struktur und der verfügbaren Funktionen erleichtert. Häufig genutzt für Debugging und die Analyse von Objekten, besonders wenn die Dokumentation eingeschränkt oder nicht verfügbar ist.
class MyClass:
def __init__(self):
self.name = "Alice"
def greet(self):
print("Hello, " + self.name)
obj = MyClass()
print(dir(obj)) # Gibt die Liste der Attribute und Methoden des Objekts 'obj' aus
print(dir()) # Gibt die Liste der Namen im aktuellen lokalen Namespace aus
1.2 Arbeit mit Kollektionen
Es gibt noch ein paar nützliche Funktionen für die Arbeit mit Kollektionen. Vielleicht wurden sie in früheren Vorlesungen erwähnt, aber jetzt möchte ich etwas genauer darauf eingehen.
zip()
min()
max()
sum()
count()
Funktion zip()
Die Funktion zip()
kombiniert mehrere iterierbare
Objekte (wie Listen, Tupel, Strings) und gibt einen Iterator von
Tupeln zurück. Jedes Tupel enthält Elemente, die von denselben
Indexpunkten aller iterierbaren Objekte gesammelt wurden.
Häufig verwendet, um Daten aus mehreren iterierbaren Objekten zu kombinieren und zu ermöglichen, dass sie einfach gleichzeitig durchlaufen werden. Auch nützlich zur Erstellung von Dictionaries aus zwei Listen — eine für Schlüssel, die andere für Werte.
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
combined = zip(names, ages)
print(list(combined)) # Ausgabe: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]
Funktion max()
Die Funktion max()
gibt das größte Element des angegebenen
iterierbaren Objekts oder aus mehreren angegebenen Argumenten zurück.
Es kann auch eine Schlüssel-Funktion angegeben werden, um die
Vergleichsregel zu definieren.
numbers = [1, 2, 3, 4, 5]
print(max(numbers)) # Ausgabe: 5
# Mit Schlüssel-Funktion
words = ["apple", "banana", "cherry"]
print(max(words, key=len)) # Ausgabe: 'banana'
Funktion min()
Die Funktion min()
gibt das kleinste Element des angegebenen
iterierbaren Objekts oder aus mehreren angegebenen Argumenten zurück.
Es kann auch eine Schlüssel-Funktion angegeben werden, um die
Vergleichsregel zu definieren.
numbers = [1, 2, 3, 4, 5]
print(min(numbers)) # Ausgabe: 1
# Mit Schlüssel-Funktion
words = ["apple", "banana", "cherry"]
print(min(words, key=len)) # Ausgabe: 'apple'
Funktion count()
Die Funktion count()
wird verwendet, um die Anzahl der
Vorkommen eines Elements in einem iterierbaren Objekt wie einer Liste
oder einem String zu zählen. Wird auf einer Liste, einer Kollektion
oder einem Iterator aufgerufen.
numbers = [1, 2, 2, 3, 4, 2, 5]
print(numbers.count(2)) # Ausgabe: 3
text = "hello world"
print(text.count("o")) # Ausgabe: 2
Funktion sum()
Die Funktion sum()
gibt die Summe aller Elemente eines
iterierbaren Objekts zurück. Optional kann ein Startwert angegeben
werden, der zur Summe hinzugefügt wird.
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # Ausgabe: 15
# Mit Startwert
print(sum(numbers, 10)) # Ausgabe: 25
1.3 Code-Ausführung
Und noch zwei Funktionen, die dir als Anfänger nützlich sein können:
eval()
exec()
Sie bieten leistungsstarke Funktionen, erfordern jedoch vorsichtige Verwendung aufgrund potenzieller Sicherheitsrisiken. Hier sind die Details zu jeder dieser Funktionen:
Funktion eval()
Die Funktion eval(expression)
nimmt einen String entgegen
und führt ihn als Python-Ausdruck aus. Sie gibt das Ergebnis der
Ausführung dieses Ausdrucks zurück. Wird verwendet, um String-Ausdrücke
als Python-Code zu evaluieren.
Beispiele:
x = 10
result = eval("x + 5")
print(result) # Ausgabe: 15
Funktion exec()
Die Funktion exec()
nimmt einen String entgegen und führt
ihn als Python-Code aus. Im Gegensatz zu eval()
, das nur
Ausdrücke ausführt, kann exec()
beliebige Python-Anweisungen
ausführen, einschließlich Funktionsdefinitionen, Schleifen und
Modulimporten. Diese Funktion gibt keinen Wert zurück.
Wird verwendet, um dynamische Skripte auszuführen und neue Funktionen oder Klassen während der Programmausführung zu definieren.
code = """
def greet(name):
print(f"Hello, {name}!")
greet("Alice")
"""
exec(code)
# Ausgabe: Hello, Alice!
Wichtig!
Wie auch eval()
kann exec()
gefährlich sein,
wenn es mit unzuverlässigen Eingabedaten verwendet wird. Sei vorsichtig
und vermeide die Verwendung von exec()
zur Ausführung von
Code in Produktionsumgebungen.
GO TO FULL VERSION