[Python-Dev] redefining is (original) (raw)

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 haskey()). 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