[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