[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