Seite 1 von 1

Simple Frage zu Variablen

Verfasst: Samstag 1. März 2014, 12:06
von muvo2k
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

Re: Simple Frage zu Variablen

Verfasst: Samstag 1. März 2014, 12:23
von 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.

Re: Simple Frage zu Variablen

Verfasst: Sonntag 2. März 2014, 23:45
von Leonidas
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).