[Python-Dev] redefining is

Andrew Koenig ark-mlist at att.net
Thu Mar 18 13:39:50 EST 2004


> 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!

Indeed.  Of course, object() is mutable, so there is no proposal to change
the meaning of this program.  What I'm concerned about is someone trying to
do the same thing this way:

	missing = 'missing'

	if d.get('somekey', missing) is 'missing':
		# it ain't there

This code contains a bug, but on an implementation that interns strings that
happen to look like identifiers, no test will detect the bug.




More information about the Python-Dev mailing list