Hi James and Steve Myself and Steve wrote:
>> Notice that '+=' creates uses the same object when the object is a >> list, but creates a new object. This raises the question: Why and how >> does Python behave in this way? > Lists are mutable and can be modified in place. Tuples are immutable and > cannot be. This correctly answers why this happens. Steve: I wanted James to think about this question. He learns more that way. (I already knew the answer.) James: Combining tuple assignment with increment assignment in a single statement will increase the cognitive burden on both writer and reader of the line of code. In other words, in most cases > a += <EXP1> > b += <EXP2> is easy to write and read than > a, b += <EXP1>, <EXP2> Now look at: > a, b += my_object.some_method(args) It is simpler than: > value = my_object.some_method(args) > a += value[0] > b += value[1] You can say that here the extra lines increase the cognitive burden. And I think I'd agree with you. But I think there's a code-smell here. Better, I think, is to introduce a type that supports augmented assignment. For example > vec = Vector(a, b) > inc = Vector(c, d) > vec += inc I hope this helps -- Jonathan _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/