Simple Frage zu Variablen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
muvo2k
User
Beiträge: 1
Registriert: Samstag 1. März 2014, 11:51

Hallo Leute bin Neu hier bitte um Welpenschutz :D Regeln lassen sich nicht aufrufen

Bin gerade beim http://www.python-kurs.eu/variablen.php # Absoluter Anfänger bitte nicht gleich steinigen ! Danke

>>> x = 3
>>> y = x
>>> y = 2


Intuitiv würde man davon ausgehen, dass Python zunächst für x einen Speicherort wählt und dort das Objekt (Zahl) 3 abspeichert. Anschließend wird der Variablen y der Wert von x zugewiesen. In C und vielen anderen Programmiersprachen würde auch für y ein eigener Speicherort bestehen, in dem nun die Zahl 3 hineingeschrieben würde. Python geht anders vor: x ist eine Variable mit dem Objekt 3 und y ist eine Variable mit dem "selben" (nicht "gleichen") Objekt. x und y "zeigen" auf das gleiche Objekt. In der letzten Zeile wird y nun der Wert 2 zugewiesen, jetzt muss ein neues Objekt angelegt werden und y "zeigt" auf einen neuen Speicherort.

Soweit dachte ich ich habe es verstanden doch doch warum geht nicht ?
>>> x = 3
>>> x = y
>>> y = 2
bin verwirrt :D


Danke
BlackJack

@muvo2k: Warum sollte das gehen, beziehungsweise was erwartest Du denn da? In der ersten Zeile wird `x` an den Wert 3 gebunden. In der zweiten Zeile wird `x` an den Wert gebunden an den `y` gerade gebunden ist. Und da ist das Problem wenn `y` vorher an nichts gebunden wurde, was sollte ausser einem `NameError` oder `UnboundLocalError` denn an der Stelle passieren? Wenn das keine Ausnahme auslöst und direkt danach ``print x`` ausgeführt würde, was sollte *da* dann als Wert für `x` ausgegeben werden?

Wovon man ”intuitiv” ausgehen würde, hängt übrigend davon ab mit was für Programmiersprachen man vorher Erfahrungen gemacht hat. Und falls mit noch keiner Programmiersprache Erfahrungen bestehen, dann ist die Frage IMHO komplett offen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

So Begriffe wie Speicherort oder Variablen sind auch in diesem Fall ziemlich unzutreffend, weil Python kennt keine Speicherorte und hat dementsprechend keine Pointer um auf diese zu verweisen. Auch der Begriff Variable ist nicht wirklich zutreffend.

Was Python hat sind Objekte (wie etwa die 2 oder die 3 die Objekte vom Typ 'int' sind) und Namen (in diesem Fall x, y, diese sind keine Objekte und haben dementsprechend auch keinen Typ).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten