[Python-ideas] set.add could return True or False
Matt Joiner
anacrolix at gmail.com
Wed Mar 14 18:36:27 CET 2012
set.add(x) could return True if x was added to the set, and False if x
was already in the set.
Adding an element that is already present often constitutes an error in my code.
As I understand, set.add is an atomic operation. Having set.add return
a boolean will also allow EAFP-style code with regard to handling
duplicates, the long winded form of which is currently:
if a not in b:
b.add(a) <-- race condition
do_c()
Which can be improved to:
if b.add(a):
do_c()
Advantages:
* Very common code pattern.
* More concise.
* Allows interpreter atomicity to be exploited, often removing the
need for additional locking.
* Faster because it avoids double contain check, and can avoid locking.
More information about the Python-ideas
mailing list