Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
modul:m323:learningunits:lu02:byvaluebyreference [2024/08/28 08:57] – angelegt kmaurizi | modul:m323:learningunits:lu02:byvaluebyreference [2024/08/28 09:03] (aktuell) – kmaurizi | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | |||
====== LU02d - By Value und By Reference in Python ====== | ====== LU02d - By Value und By Reference in Python ====== | ||
Zeile 14: | Zeile 13: | ||
Zu den unveränderlichen Datentypen in Python gehören: | Zu den unveränderlichen Datentypen in Python gehören: | ||
- | int (z.B. 5) | + | * int (z.B. '' |
- | float (z.B. 3.14) | + | |
- | str (z.B. ' | + | |
- | tuple (z.B. (1, 2, 3)) | + | |
Wenn eine Variable mit einem dieser Typen an eine Funktion übergeben wird, wird eine Kopie des Wertes erstellt. Jede Änderung innerhalb der Funktion betrifft nur die Kopie, nicht die ursprüngliche Variable. | Wenn eine Variable mit einem dieser Typen an eine Funktion übergeben wird, wird eine Kopie des Wertes erstellt. Jede Änderung innerhalb der Funktion betrifft nur die Kopie, nicht die ursprüngliche Variable. | ||
Zeile 29: | Zeile 29: | ||
x += 10 | x += 10 | ||
return x | return x | ||
+ | | ||
+ | | ||
if name == ' | if name == ' | ||
- | a = 5 | + | |
- | new_value = modify_value(a) | + | new_value = modify_value(a) |
- | print(f' | + | print(f' |
- | print(f' | + | print(f' |
</ | </ | ||
- | Hier bleibt die ursprüngliche Variable a unverändert, | + | Hier bleibt die ursprüngliche Variable |
===== By Reference ===== | ===== By Reference ===== | ||
Zeile 46: | Zeile 48: | ||
Zu den veränderbaren Datentypen in Python gehören: | Zu den veränderbaren Datentypen in Python gehören: | ||
- | list (z.B. [1, 2, 3]) | + | * list (z.B. '' |
- | dict (z.B. {' | + | |
- | set (z.B. {1, 2, 3}) | + | |
Wenn eine Variable mit einem dieser Typen an eine Funktion übergeben wird, wird eine Referenz auf das Originalobjekt übergeben. Jede Änderung innerhalb der Funktion wirkt sich direkt auf das ursprüngliche Objekt aus. | Wenn eine Variable mit einem dieser Typen an eine Funktion übergeben wird, wird eine Referenz auf das Originalobjekt übergeben. Jede Änderung innerhalb der Funktion wirkt sich direkt auf das ursprüngliche Objekt aus. | ||
Zeile 59: | Zeile 62: | ||
""" | """ | ||
some_list.append(4) | some_list.append(4) | ||
+ | | ||
+ | | ||
if name == ' | if name == ' | ||
- | my_list = [1, 2, 3] | + | |
- | modify_list(my_list) | + | modify_list(my_list) |
- | print(f' | + | print(f' |
</ | </ | ||
Zeile 71: | Zeile 76: | ||
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. | ||