6.1 Variablen sind Referenzen
In Python sind Variablen keine direkten Behälter für Werte, sondern Referenzen auf Objekte. Das bedeutet, dass du beim Erstellen einer Variable in Python einfach eine Referenz auf ein Objekt im Speicher erstellst.
Diese Eigenschaft der Sprache hat wichtige Konsequenzen für den Umgang mit Variablen, insbesondere bei der Übergabe von Objekten an Funktionen oder deren Zuweisung an andere Variablen.
Wenn du eine Variable erstellst und ihr einen Wert zuweist, reserviert Python einen Speicherplatz für dieses Objekt und die Variable wird eine Referenz auf dieses Objekt. Wenn du eine Variable einer anderen zuweist, wird die neue Variable auf dasselbe Objekt verweisen wie die ursprüngliche Variable. Das bedeutet, dass Änderungen, die über eine Variable vorgenommen werden, auch die andere beeinflussen, sofern das Objekt veränderbar ist.
Beispiel:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # Gibt aus: [1, 2, 3, 4]
Wir haben die Zahl 4
zur Variable b
hinzugefügt, aber sie wurde auch zur Liste in der Variable a
hinzugefügt, da beide Variablen nur Referenzen auf das Listenobjekt [1, 2, 3] sind.
6.2 Unveränderbare Objekte
In Python werden Objekte in veränderbare und unveränderbare unterteilt. Veränderbare Objekte, wie Listen und Dictionaries, können nach der Erstellung geändert werden.
Unveränderbare Objekte, wie Strings und Zahlen, können nach der Erstellung nicht geändert werden. Wenn du mit unveränderbaren Objekten arbeitest, führen Änderungen zur Erstellung eines neuen Objekts:
Zuweisungen ändern niemals das Objekt:
a = 5 # a speichert eine Referenz auf das Objekt 5
b = a # b speichert ebenfalls eine Referenz auf das Objekt 5
b = 3 # jetzt speichert b eine Referenz auf das Objekt 3
print(a) # Gibt aus: 5
Ein Objekt kann verändert werden, indem seine Funktion aufgerufen wird:
a = [1, 2, 3]
b = a
b.append(4)
print(a) # Gibt aus: [1, 2, 3, 4]
Aber es gibt unveränderbare Objekte, die dennoch Funktionen haben. Diese Funktionen ändern nicht das Originalobjekt, sondern geben ein neues Objekt zurück, das das neue Ergebnis enthält:
name = "Alex"
print(name) # Gibt aus: Alex
name2 = name.lower()
print(name2) # Gibt aus: alex
Strings sind unveränderbare Objekte. Obwohl sie Methoden haben, ändern diese Methoden nie das String-Objekt selbst – stattdessen geben sie immer einen neuen String zurück (ein neues Objekt). Das alte Objekt bleibt unverändert.
6.3 Umgang mit dem Typ None
In Python gibt es einen speziellen Datentyp, der das Fehlen eines Wertes darstellt – None
. Er wird verwendet, um leere Variablen zu kennzeichnen oder als Rückgabewert für Funktionen, die nichts zurückgeben. Das Verständnis von None ist wichtig für die Steuerung des Programmverhaltens, insbesondere im Kontext von Bedingungsanweisungen und der Datenverarbeitung.
Grundlagen der Verwendung von None
None
ist die einzige Instanz der Klasse NoneType
.
Er wird verwendet, um anzugeben, dass eine Variable keinen Wert hat. In Bedingungen wird None
als falsch (False
) bewertet.
a = None
if a:
print("a ist True")
else:
print("a ist None oder False")
Vergleich mit None
Die Überprüfung einer Variablen auf None sollte mit dem is-Operator
erfolgen, nicht mit ==. Der is-Operator
prüft die Identität, nicht die Gleichheit der Werte.
a = None
if a is None:
print("a ist None")
else:
print("a hat einen Wert")
None in Funktionen
None
wird häufig in Funktionen verwendet, die keinen expliziten Rückgabewert haben sollen. Wenn eine Funktion keinen Wert zurückgibt, gibt sie implizit None
zurück.
def func():
print("Diese Funktion gibt None zurück")
result = func()
print(result) # Gibt aus: None
None und Listen
None
kann in Listen, Tupeln oder anderen Sammlungen verwendet werden, um das Fehlen eines Elements an einer bestimmten Position anzuzeigen.
my_list = [1, None, 3]
print(my_list) # Gibt aus: [1, None, 3]
GO TO FULL VERSION