Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| modul:m323:learningunits:lu02:byvaluebyreference [2024/08/28 08:59] – [Beispiele für Mutable Datentypen] kmaurizi | modul:m323:learningunits:lu02:byvaluebyreference [2026/08/25 09:00] (aktuell) – Interaktive Animation zum Speichermodell ergänzt admin | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | |||
| ====== LU02d - By Value und By Reference in Python ====== | ====== LU02d - By Value und By Reference in Python ====== | ||
| Zeile 5: | Zeile 4: | ||
| In Python ist es wichtig zu verstehen, wie Daten zwischen Funktionen und Variablen übergeben werden. Python verwendet sowohl '' | In Python ist es wichtig zu verstehen, wie Daten zwischen Funktionen und Variablen übergeben werden. Python verwendet sowohl '' | ||
| + | |||
| + | ===== Animation: Was im Speicher wirklich passiert ===== | ||
| + | |||
| + | Die folgende Animation zeigt Schritt für Schritt, was beim Aufruf einer Funktion im Arbeitsspeicher geschieht – einmal mit einer Zahl ('' | ||
| + | |||
| + | Klicken Sie sich mit **Weiter** durch beide Beispiele und vergleichen Sie insbesondere **Schritt 3**: Bis dorthin sind die beiden Abläufe identisch – erst dort trennen sich die Wege. | ||
| + | |||
| + | {{url> | ||
| ===== By Value ===== | ===== By Value ===== | ||
| Zeile 32: | Zeile 39: | ||
| | | ||
| | | ||
| - | if name == 'main': | + | if __name__ |
| a = 5 | a = 5 | ||
| new_value = modify_value(a) | new_value = modify_value(a) | ||
| Zeile 40: | Zeile 47: | ||
| Hier bleibt die ursprüngliche Variable '' | Hier bleibt die ursprüngliche Variable '' | ||
| + | |||
| + | <WRAP center round info 90%> | ||
| + | **Genauer betrachtet: | ||
| + | </ | ||
| ===== By Reference ===== | ===== By Reference ===== | ||
| Zeile 63: | Zeile 74: | ||
| """ | """ | ||
| some_list.append(4) | some_list.append(4) | ||
| - | if name == 'main': | + | |
| - | my_list = [1, 2, 3] | + | |
| - | modify_list(my_list) | + | if __name__ |
| - | print(f' | + | my_list = [1, 2, 3] |
| + | modify_list(my_list) | ||
| + | print(f' | ||
| </ | </ | ||
| Zeile 75: | Zeile 88: | ||
| Die Art und Weise, wie Werte und Referenzen in Python übergeben werden, hat direkte Auswirkungen auf das Verhalten und die Vorhersagbarkeit des Codes: | Die Art und Weise, wie Werte und Referenzen in Python übergeben werden, hat direkte Auswirkungen auf das Verhalten und die Vorhersagbarkeit des Codes: | ||
| - | Immutable Objekte: Änderungen in einer Funktion betreffen nur die lokale Kopie. Der Originalwert bleibt unverändert. | + | * **Immutable Objekte:** Änderungen in einer Funktion betreffen nur die lokale Kopie. Der Originalwert bleibt unverändert. |
| - | Mutable Objekte: Änderungen in einer Funktion betreffen direkt das Originalobjekt. Dies kann zu unbeabsichtigten Seiteneffekten führen, wenn die Funktion den Zustand des Objekts verändert. | + | * **Mutable Objekte:** Änderungen in einer Funktion betreffen direkt das Originalobjekt. Dies kann zu unbeabsichtigten Seiteneffekten führen, wenn die Funktion den Zustand des Objekts verändert. |
| Um ungewollte Seiteneffekte zu vermeiden, sollten Sie sich der Datenarten bewusst sein, die Sie in Funktionen verwenden, und überlegen, ob das Objekt unverändert bleiben soll oder nicht. | Um ungewollte Seiteneffekte zu vermeiden, sollten Sie sich der Datenarten bewusst sein, die Sie in Funktionen verwenden, und überlegen, ob das Objekt unverändert bleiben soll oder nicht. | ||
| Zeile 86: | Zeile 99: | ||
| Tipp: Wenn Sie mutable Objekte verwenden, aber unerwartete Änderungen vermeiden möchten, sollten Sie in Erwägung ziehen, eine Kopie des Objekts zu erstellen, bevor Sie es an eine Funktion übergeben. | Tipp: Wenn Sie mutable Objekte verwenden, aber unerwartete Änderungen vermeiden möchten, sollten Sie in Erwägung ziehen, eine Kopie des Objekts zu erstellen, bevor Sie es an eine Funktion übergeben. | ||
| </ | </ | ||
| + | |||
| + | ---- | ||
| + | {{tag> | ||
| + | [[https:// | ||
| + | |||