[Python-de] Wie sieht Python fuer mich aus?

Stefan Schwarzer sschwarzer at sschwarzer.net
Fr Jan 13 02:40:55 EST 2017


On 2017-01-09 17:33, Hermann Riemann wrote:
> Am 09.01.2017 um 14:31 schrieb Sven R. Kunze:
>>>    »==« bedeutet »ist gleich«, und »!=« bedeutet »ist nicht
>>>    gleich«.
> 
>> Es gibt noch "is" und "is not" für Objekt-Identitätsvergleich.
> 
> Pointer Vergleich bzw. Adressvergleich. (Adresse =id(variable))

Ein Fallstrick bei der Verwendung von `id` ist, dass
verschiedene Objekte aufgrund der Garbage Collection während
der Ausführung die gleiche Id bekommen können.

Mir fällt jetzt aber kein praktisches Beispiel ein, wo das
_bei einem direkten Objektvergleich_ auftreten würde. Bei

  if id(objekt1) == id(objekt2):
      ...

dürften `objekt1` und `objekt2` immer Namen sein, die an ein
Objekt gebunden sind. Wenn man einen Objekt-Vergleich
möchte, würde man wohl kaum Ausdrücke verwenden, die ganz
oder teilweise "garbage-collected" werden könnten, nachdem
nur einer der `id`-Aufrufe erfolgt ist. Oder hat jemand von
euch schon Code gesehen, wo das relevant sein könnte?

Wenn man `is` verwendet, muss man sich aber nicht mal
Gedanken drüber machen. :-) Und `is` ist das normale Idiom
für den Objekt-Vergleich.

Viele Grüße
Stefan


Mehr Informationen über die Mailingliste python-de