lehrkraefte:snr:informatik:python:variablen-in-python

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:snr:informatik:python:variablen-in-python [2021/10/23 11:29]
Olaf Schnürer [Objekte, Variablen und Mutabilität in Python]
lehrkraefte:snr:informatik:python:variablen-in-python [2022/07/21 14:44] (current)
Olaf Schnürer [Link zurück zu Listen]
Line 2: Line 2:
 Intuitiv wissen wir aus unserer bisherigen Programmiererfahrung, was eine Variable ist. Trotzdem lohnt es sich, den Begriff der //Variablen// in der Informatik bzw. genauer in Python präzise zu definieren((er unterscheidet sich vom Begriff der Variablen in der Mathematik, vgl. [[https://en.wikipedia.org/wiki/Variable_(mathematics)]])).  Intuitiv wissen wir aus unserer bisherigen Programmiererfahrung, was eine Variable ist. Trotzdem lohnt es sich, den Begriff der //Variablen// in der Informatik bzw. genauer in Python präzise zu definieren((er unterscheidet sich vom Begriff der Variablen in der Mathematik, vgl. [[https://en.wikipedia.org/wiki/Variable_(mathematics)]])). 
  
-(Ich habe das auch erst beim Schreiben dieses Textes gelernt - man kommt also ziemlich weit mit dem intuitiven Begriff. Die offizielle Dokumentation ist [[https://docs.python.org/3/reference/datamodel.html|hier]]; dort wird kaum von Variablen gesprochen, sondern meist von Namen, die man an ein Objekt bindet.)+(Genau habe ich das auch erst beim Schreiben dieses Textes gelernt - man kommt also ziemlich weit mit dem intuitiven Begriff. Die offizielle Dokumentation ist [[https://docs.python.org/3/reference/datamodel.html|hier]] und enthält natürlich viel mehr Details als mein Text. Dort wird kaum von Variablen gesprochen, sondern meist von Namen, die an Objekte gebunden werden.)
  
 <WRAP round info> <WRAP round info>
Line 9: Line 9:
   * einem Wert.   * einem Wert.
   * einer Identität (diese mag man sich als "Speicheradresse" vorstellen)   * einer Identität (diese mag man sich als "Speicheradresse" vorstellen)
-Eine //Variable// in Python ist ein Name, der mit einem Objekt verbunden ist, also ein //benanntes Objekt//Noch präziser ist eine //Variable// ein Name zusammen mit einem Verweis auf ein Objekt.+Eine //Variable// in Python ist ein Name, der mit einem Objekt verbunden ist, also ein //benanntes Objekt//Präziser ist eine //Variable// ein Name zusammen mit einem Verweis auf ein Objekt.
 </WRAP> </WRAP>
  
 <WRAP round box> <WRAP round box>
 Beispielsweise erzeugt Beispielsweise erzeugt
-  * ''<nowiki>"abc"</nowiki>'' ein Objekt vom Typ //string//, dessen //Wert// die Zeichenkette "abcist (die Identität wird beim Programmablauf bestimmt; der Programmierer hat da keinen Einfluss). +  * ''<nowiki>"abc"</nowiki>'' ein Objekt vom Typ //string//, dessen //Wert// die Zeichenkette abc ist (die Identität wird beim Programmablauf bestimmt; der Programmierer hat da keinen Einfluss). 
   * ''<nowiki>3</nowiki>'' ein Objekt vom Typ //integer//, dessen //Wert// die Zahl 3 ist.    * ''<nowiki>3</nowiki>'' ein Objekt vom Typ //integer//, dessen //Wert// die Zahl 3 ist. 
-  * ''<nowiki>[1,2,3]</nowiki>'' ein Objekt vom Typ //list//, dessen //Wert// die Aufzählung/Liste 1,2,3 von Zahlen bzw. genaugenommen von Objekten vom Typ //integer// ist.+  * ''<nowiki>[1,2,3]</nowiki>'' ein Objekt vom Typ //list//, dessen //Wert// die Aufzählung/Liste [1,2,3von Zahlen bzw. genaugenommen von Objekten vom Typ //integer// ist.
 Die folgenden drei Zuweisungsoperatoren ''='' definieren Variablen (mit den Namen) ''x'', ''y'' und ''z'', die jeweils auf das rechts des Zuweisungsoperators ''='' angegebene Objekt verweisen. Die folgenden drei Zuweisungsoperatoren ''='' definieren Variablen (mit den Namen) ''x'', ''y'' und ''z'', die jeweils auf das rechts des Zuweisungsoperators ''='' angegebene Objekt verweisen.
 <code python> <code python>
-x = 'abc'+x = "abc"
 y = 3 y = 3
 z = [1,2,3] z = [1,2,3]
 </code> </code>
-Taucht eine Variable (also etwa ''x'') später irgendwo im Programm auf, wird dort mit dem Objekt gearbeitet, auf das diese Variable verweist.+Taucht eine Variable (also etwa ''x'') später irgendwo im Programm auf (aber nicht links von einem Zuweisungsoperator ''=''), wird dort mit dem Objekt gearbeitet, auf das diese Variable verweist.
  
 Typ, Wert und Identität der Variablen ''x'' (oder genauer gesagt des Objektes, auf das diese Variable verweist) können wie folgt ausgeben werden (analog für ''y'' und ''z''): Typ, Wert und Identität der Variablen ''x'' (oder genauer gesagt des Objektes, auf das diese Variable verweist) können wie folgt ausgeben werden (analog für ''y'' und ''z''):
Line 31: Line 31:
 print(id(x)) print(id(x))
 </code> </code>
-Man mag sich hier wundern, warum nicht etwas wie ''print(value(x))'' in der zweiten Zeile steht. Der Befehl ''print'' extrahiert aber automatisch den Wert aus dem angegebenen Objekt (genauer haben alle gängigen Objekte eine "Anzeigefunktion", die meist den Wert in geeigneter Weise als string liefert; diese Anzeigefunktion von ''x'' ruft ''print'' intern auf).+Man mag sich hier wundern, warum nicht etwas wie ''print(value(x))'' in der zweiten Zeile steht. Der Befehl ''print'' extrahiert aber automatisch den Wert aus dem angegebenen Objekt((Genauer haben alle gängigen Objekte eine "Anzeigefunktion", die meist den Wert in geeigneter Weise als string liefert; diese Anzeigefunktion von ''x'' ruft ''print'' intern auf.)).
  
-Bildlich stellt ich mir die Variable ''x'' wie folgt als Verweis so vor: +Bildlich stellt ich mir die soeben definierten Variablen wie folgt als Verweise vor (die Identitäten sind mehr oder weniger zufällig):
- +
-$a = \sum_i x^2$ +
-<WRAP round box> +
-$ x \rightarrow \begin{array}{|l|c|}  +
-\text{Typ\}      & \text{string}\\ +
-\text{Wert\}     & \text{"abc"} \\ +
-\text{Identiät\} & 2\\ +
-\end{array} +
-+
-</WRAP> +
- +
-</WRAP>+
  
 +{{:lehrkraefte:snr:informatik:python:variablen-in-python.jpg?direct&400|}}
 </WRAP> </WRAP>
  
Line 62: Line 51:
 </WRAP> </WRAP>
 </WRAP> </WRAP>
 +
 +Hier noch zwei Beispiele, die Teilaspekte illustrieren.
  
 <WRAP round box> <WRAP round box>
Line 94: Line 85:
 </WRAP> </WRAP>
  
 +
 +===== Nachträglich gefunden =====
 +
 +Auf der Wikipedia-Seite https://en.wikipedia.org/wiki/Data_type findet sich die nützliche Abbildung https://en.wikipedia.org/wiki/Data_type#/media/File:Python_3._The_standard_type_hierarchy.png.
  
 ===== Link zurück zu Listen ===== ===== Link zurück zu Listen =====
  • lehrkraefte/snr/informatik/python/variablen-in-python.1634981370.txt.gz
  • Last modified: 2021/10/23 11:29
  • by Olaf Schnürer