[Python-Dev] redefining is
Barry Warsaw
barry at python.org
Thu Mar 18 11:48:29 EST 2004
On Thu, 2004-03-18 at 11:45, Aahz wrote:
> On Thu, Mar 18, 2004, Barry Warsaw wrote:
> > On Thu, 2004-03-18 at 10:23, Jewett, Jim J wrote:
> >>
> >> There is an idiom (I've seen it more in Lisp than in python)
> >> of creating a fresh object to act as a sentinel.
> >
> > A very common use case in Python is where None is a valid value in a
> > dictionary:
> >
> > missing = object()
> > if d.get('somekey', missing) is missing:
> > # it ain't there
> >
> > It even reads well!
>
> Ugh. While I agree that the idiom has its place, this ain't one of
> them; you should be using ``in`` (or ``has_key()``). The standard idiom
> is even more readable, and there should be only one way to do it. Maybe
> you meant something more like
>
> if d['somekey'] is missing:
Let me rephrase that:
missing = object()
value = d.get('somekey', missing)
if value is missing:
# it ain't there
else:
return value
-Barry
More information about the Python-Dev
mailing list