[Python-de] Re: for unpacking

[email protected] (Stefan Ram) 11 Aug 2024 15:29:57 GMT
Newsgroups gmane.comp.python.general.german
Organization Stefan Ram
Message-ID <[email protected]>
[email protected] (Stefan Ram) schrieb oder zitierte:
>Beim /Binden/ wird, wie ich oben ausgeführt hatte, eine
>Quelltextentität (der Name) mit einer Laufzeitentität (dem
>Objekt) verbunden.
>Bei einer /Zuweisung/ (Begriff aus anderen Programmiersprachen)
>wird ein Wert (eine Laufzeitentität) in einen Wertspeicher
>(ebenfalls eine Laufzeitentität!) geschrieben.

  Hierzu vergleiche auch diesen Auszug aus "Compilers" von Aho:

|Another important distinction we must make when discussing
|programming languages is whether changes occurring as the
|program runs affect the values of data elements or affect the
|interpretation of names for that data.
.
  Werden Werte von Laufzeitobjekten verändert (Zuweisung) oder die
  Interpretation von Namen (Bindung)? In der Nähe steht dann:

|       environment                   state
|names --------------> locations --------------> values
|                     (variables)
|Figure 1.8: Two-stage mapping from names to values
.
  In einer Programmiersprache wie C sind Namen durch die
  Umgebung an Speicherplätze gebunden, die dann durch einen
  Zustand einen Wert erhalten.

  Für Python könnte man diese Abbildung so modifizieren:

          binding                  state
names --------------> object  --------------> values
.
  Namen sind an Objekte gebunden, die dann einen Wert haben können.
  Zum Beispiel in Python:

import tkinter; tkinter.Tk().withdraw()

va = tkinter.IntVar( value=1 )
vb = tkinter.IntVar( value=2 )

# 1. Umbindung (mit "=") des Namens
# Änderung der Umgebung (Bindung des Namens "n")
# Zustand der beiden Variablen bleibt unverändert

n = va; print( n.get() ) # Ausgabe: 1
n = vb; print( n.get() ) # Ausgabe: 2

# 2. Zuweisung (mit "set") an die Variable
# Änderung des Zustandes
# Bindung des Namens "n" wird nicht verändert

n = va
va.set( 1 ); print( n.get() ) # Ausgabe: 1
va.set( 2 ); print( n.get() ) # Ausgabe: 2

  . In C kann man Namen (innerhalb eines Gültigkeitsbereichs)
  hingegen nicht umbinden, sondern nur etwas an deren Objekt
  zuweisen, wofür dann in C "=" verwendet wird.
_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an [email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]