Bar Harel writes:

 > The original example of "if dict.setdefault()" is problematic as well for
 > the exact same reason. You can't tell if the default value was already
 > there in the first place.

That's not a problem.  In both cases if you need an object that can't
possibly be there, you have

    # 'default' by analogy to dict.setdefault.  It's a bad name for
    # this argument to add_unique, and does not have the semantics of
    # inserting default in the set.

    olditem = someset.add_unique(thing, default=(sentinel:=object()))
    if olditem is not sentinel:
        # handle dupe

More likely you trust yourself not to insert it, and use a sentinel
defined previously.

Of course, we may prefer a boolean return, despite the general rule
about returning elements.  I'm single-threaded, and so agnostic on
that. :-)  But if it turns out that somebody *wants* to check "2 is 2.0",
this .add_unique can serve both purposes.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/PV6JTCENHCHSRCY4B2YX4LZRNAEWDUFE/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to