Tuples and immutability
Antoon Pardon
antoon.pardon at rece.vub.ac.be
Wed Mar 12 07:21:05 EDT 2014
Op 12-03-14 10:51, Ian Kelly schreef:
> On Wed, Mar 12, 2014 at 3:39 AM, Antoon Pardon
> <antoon.pardon at rece.vub.ac.be> wrote:
>> The documentation is wrong at that point as the following code illustrates.
> Either way it still has to do a getitem and a setitem, but if you have
> a more nested structure then the extra getitems are not repeated. For
> example, using your logdict class:
Sure, but the documentation doesn't say for sufficiently nested structures
some evaluations are not repeated.
Take the following example.
| tab['key'] = [1]
| tab['key'] += [2]
Now let us rewrite that second statment in two different ways.
| tab['key'] = tab['key'] + [2]
or
| tmp = tab['key']
| tmp += [2]
Now which of these two rewritings is closer to the augmented concatenation?
A natural reading of the documentation would conclude the second one, because
in that case we only need to evaluate tab['key'] once as righthand sided.
However it turns out the augmented concantenation is closer to the first
rewriting here, evaluating tab['key'] twice once a lefthand sided and once
as right hand sided, which IMO will surprise people that rely on the documentation.
--
Antoon Pardon
More information about the Python-list
mailing list