Veränderbar und Unveränderbar in Python

Veränderbar und Unveränderbar in Python

Dieser Artikel erklärt Veränderbarkeit und Unveränderbarkeit in Python.

YouTube Video

Veränderbar und Unveränderbar in Python

"Veränderbar" und "unveränderbar" beziehen sich auf die Veränderbarkeit eines Objekts. Das Verständnis dieses Konzepts hilft, unerwartete Fehler zu vermeiden und eine effiziente Speicherverwaltung zu gewährleisten.

Was bedeutet Veränderbar?

Veränderbare Objekte können ihren internen Zustand nach der Erstellung ändern.

Haupttypen veränderbarer Daten

  • list
  • dict
  • set
  • Benutzerdefinierte Klassen (wenn ihre Attribute geändert werden können)

Beispiel: Bearbeiten einer Liste

1numbers = [1, 2, 3]
2numbers[0] = 100
3print(numbers)  # [100, 2, 3]

Eine Liste ist ein veränderbares Objekt, und ihre Elemente können frei bearbeitet werden.

Was bedeutet Unveränderbar?

Unveränderbare Objekte können nach ihrer Erstellung nicht geändert werden. Ein Versuch, sie zu ändern, führt zur Erstellung eines neuen Objekts.

Haupttypen unveränderbarer Daten

  • int
  • float
  • str
  • tuple
  • bool
  • frozenset

Beispiel: Bearbeiten eines Strings

1text = "hello"
2# text[0] = "H"  # TypeError: 'str' object does not support item assignment
3
4text = "H" + text[1:]  # Creates a new string
5print(text)  # "Hello"

Strings sind unveränderbar, daher können sie nicht teilweise geändert werden.

Vergleich von Veränderbar und Unveränderbar

 1# Mutable example
 2a = [1, 2, 3]
 3b = a
 4b[0] = 100
 5print(a)  # [100, 2, 3] -> a is also changed
 6
 7# Immutable example
 8x = 10
 9y = x
10y = 20
11print(x)  # 10 -> x is unchanged

Wie im obigen Beispiel gezeigt, werden veränderbare Objekte durch Referenz geteilt und können andere Variablen beeinflussen. Andererseits erstellen unveränderliche Objekte neue Instanzen bei einer Neuzuweisung, wobei der ursprüngliche Wert unberührt bleibt.

Untersuchung des internen Verhaltens mithilfe von id()

In Python können Sie die Funktion id() verwenden, um die ID eines Objekts zu überprüfen. Die Objekt-ID ähnelt einer Speicheradresse.

 1# Immutable int behavior
 2a = 10
 3print(id(a))  # e.g., 140715920176592
 4a += 1
 5print(id(a))  # e.g., 140715920176624 -> ID has changed
 6
 7# Mutable list behavior
 8b = [1, 2, 3]
 9print(id(b))  # e.g., 2819127951552
10b.append(4)
11print(id(b))  # Same ID -> only the content has changed

Wie gezeigt, wird für unveränderliche Typen ein neues Objekt erstellt, während veränderliche Typen an Ort und Stelle geändert werden.

Funktionen und Vorsicht bei veränderlichen und unveränderlichen Objekten

Beim Übergeben eines veränderlichen Objekts an eine Funktion können die ursprünglichen Daten verändert werden.

Beispiel: Eine Funktion, die eine Liste modifiziert

1def modify_list(lst):
2    lst.append(100)
3
4my_list = [1, 2, 3]
5modify_list(my_list)
6print(my_list)  # [1, 2, 3, 100]

Beispiel: Eine Funktion, die eine Zahl verändert

Andererseits führt der Versuch, ein unveränderliches Objekt zu verändern, zur Erstellung eines neuen Objekts.

1def modify_number(n):
2    n += 10
3
4my_number = 5
5modify_number(my_number)
6print(my_number)  # 5 -> unchanged

Praktische Überlegungen

Vermeiden Sie die Verwendung veränderlicher Objekte als Standardargumente

 1# Bad example
 2def add_item(item, container=[]):
 3    container.append(item)
 4    return container
 5
 6print(add_item(1))  # [1]
 7print(add_item(2))  # [1, 2] -> unintended behavior
 8
 9# Good example
10def add_item(item, container=None):
11    if container is None:
12        container = []
13    container.append(item)
14    return container

Da Standardargumente nur einmal bei der Funktionsdefinition ausgewertet werden, kann die Verwendung veränderlicher Objekte zu unerwarteten Nebeneffekten führen.

Zusammenfassung

Um Variablen und Datentypen in Python tiefgehend zu verstehen, ist es entscheidend, die Unterschiede zwischen veränderlichen und unveränderlichen Objekten zu begreifen. Das Verständnis dieser Eigenschaften hilft Ihnen, unbeabsichtigtes Verhalten in Ihrem Code zu vermeiden und robustere sowie besser lesbare Programme zu schreiben.

Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.

YouTube Video