On Thursday, February 27, 2014 10:01:39 AM UTC-6, Eric Jacoboni wrote:
>
> ('spam', [10, 30, 20], 'eggs')
>
> I get a TypeError for an illegal operation, but this operation is still
>
> completed?
hi Eric, others have answered your question specifically, but the issue (which
is recurring) begs a couple of questions, which will also be recurring... ehem.
This little snag (if it can be called that) is a side effect from two python
inherent design considerations:
1) not to be a nudge, but dynamic typing is the first...
2) and the concept of immutability is the second.
I'll address the second first by asking a question... should an immutable type
(object) be able to hold (contain) mutable objects ... should tuples be allowed
to hold lists?
lists within a tuple should be converted to tuples. If you want a tuple to
hold a list, make it a list in the first place. Tuples should not be
changed... and as you point out... half changing a tuple is not a good
condition if there is an exception...
Which brings me to my second point... dynamic binding... (and everything
associated with that) is at play here too.... please, don't get me wrong,
this is not flame bait and I'm not advocating static binding, nor do I want
static binding, nor do I want to open that can of worms again... just saying.
I really think this is a bug; honestly. IMHO it should be an error to use +=
with an immutable type and that means not at all. In other words, the list
should not even be considered, because we're talking about changing a tuple...
which should not be changed (nor should its members be changed).
Soooo.... the type does not support item assignment, yet the item got
assigned. This is at least inconsistent... and to my small mind means... bug
report.
:)
--
https://mail.python.org/mailman/listinfo/python-list