This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年09月25日 17:26 by James.Paget, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Messages (2) | |||
|---|---|---|---|
| msg227557 - (view) | Author: James Paget (James.Paget) | Date: 2014年09月25日 17:26 | |
The operator -= modifies a frozenset (this should not be possible), instead of signaling a TypeError. Contrast with the += operator. >>> f=frozenset([1,2]) >>> f frozenset([1, 2]) >>> f -= frozenset([1]) >>> f frozenset([2]) >>> f -= frozenset([2]) >>> f frozenset([]) >>> f += frozenset([2]) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +=: 'frozenset' and 'frozenset' >>> |
|||
| msg227558 - (view) | Author: Ezio Melotti (ezio.melotti) * (Python committer) | Date: 2014年09月25日 17:41 | |
This doesn't modify f, it replaces it with a new frozenset:
>>> f = frozenset({1, 2})
>>> f
frozenset({1, 2})
>>> id(f)
3071990668
>>> f -= frozenset({1})
>>> f
frozenset({2})
>>> id(f)
3066719340
Notice how the two ids are different.
In other words,
f -= frozenset({1})
is equivalent to
f = f - frozenset({1})
You get an error with += because
f = f + frozenset({1})
is not a valid operation for (frozen)sets.
|
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:08 | admin | set | github: 66688 |
| 2014年09月25日 17:41:40 | ezio.melotti | set | status: open -> closed nosy: + ezio.melotti messages: + msg227558 resolution: not a bug stage: resolved |
| 2014年09月25日 17:26:56 | James.Paget | create | |