[Python-de] Liste in Dictionaries
Martin v. Löwis
martin at v.loewis.de
Mon Jan 20 22:30:05 EST 2003
Christian Tismer <tismer at tismer.com> writes:
> > Das trifft's schon eher. Allerdings kann man immer noch darüber
> > streiten, ob list displays, die ausschliessliche Literale enthalten,
> > nach dieser Definition Literale sind, da ja bei jeder Auswertung des
> > Ausdrucks ein anderer Wert (sprich: eine neue Liste) herauskommt.
>
> So wollte ich ursprünglich auch argumentieren,
> aber es macht weniger Sinn als ich dachte,
> sonst würden in fast keiner Programmiersprache
> Literale existieren.
Doch, klar: In allen Sprachen, in denen Zahlen keine Objekte sind
(also keine identität haben) sind Literale eine völlig klare Sache.
In manchen Sprachen haben bestimmte Werte Adressen - gerade Literale
haben in diesen Sprachen keine Adressen - sie sind der Wert an sich.
> In Python gilt, "5 is 5", aber wo sonst schon?
Nun kann man argumentieren, dass die Identität von Zahlen in Python
ein Implementationsdetail ist, und nicht verwendet werden sollte -
ganz anders als die von list displays, wo es eine explizite Garantie
gibt, dass die Mehrfachauswertung auch jedesmal eine neue Liste macht.
> Werte in anderen Sprachen sind ganz häufig Kopien,
> für die "==" aber nicht "is" gilt.
In welchen Sprachen zum Beispiel? In C, C++, Pascal, Java, Modula,
Lisp, Fortran sicher nicht - da gibt es gar kein "is" für Zahlen.
> Obiges klappt auch für alle Integers, ulkig, habe
> mich gerade sleber ausgetrickst:
>
> (100) is (100)
Vermutlich mehrfach: Meintest du vielleicht (100,)? Ansonsten sind die
Klammern ja redundant. Dass 100 is 100 gilt, liegt an einem weiteren
Implementierungsdetail; man kann auch Fälle konstruieren, wo 100 is
not 100.
Ciao,
Martin
More information about the Python-de
mailing list