Python Saug Punkte contd.: x += y ist nicht x = x + y

written by Martin HĂ€cker on

a = b = list()
a = a + ['foo']
print b # => []

a = b = list()
a += ['foo']
print b # => ['foo']

Doh. Wie kann das sein? Kommt man von C ist das erst mal sehr verblĂŒffend - und auch die meisten anderen Programmiersprachen die ich kenne verwenden a += b als equivalent fĂŒr a = a + b.

Well, nicht so Python. Weil da gab es offenbar mal Programmierer die fanden dass man Code der mit Matrizen rechnet lieber mit Operatoren schreiben möchte weil sich das besser ließt. NatĂŒrlich nicht mit den normalen operatoren wie */+-, weil, da kann man ja den empfĂ€nger nicht in place modifizieren, und wie jeder weiß sind Matrizen ja so groß dass die dann nicht mehr in den Ram passen.

Also haben sie die = operatoren in Python so spezifiziert, dass sie ihre left-hand-variable in place modifizieren wenn diese mutable sind.

:-(