[Python-Dev] Making None a keyword

Guido van Rossum guido@python.org
Fri, 26 Apr 2002 08:10:24 -0400


> > I'd like to make None a keyword.  This prevents dumb users from
> > assigning to it and screwing themselves, and can cause a slight
> > speedup because using None avoids two dict lookups.
> > 
> > - Any objections?
> 
> +1 but only if you use the standard mechanism for this:
> warnings in 2.3, SyntaxError in 2.4.

Good point.

> > - Can somebody help me implement this?  I've got the parser changes
> >   ready, but not the compiler changes.
> > 
> > Believe it or not, Zope3 contains code that will break with this
> > change: there are functions with a default argument of the form
> > None=None as a speedup hack.  I think this is an argument *for* the
> > change. :-)
> 
> Zope3 is not the only software using these kind of hacks
> to work around the builtins lookups.

I just realized there's another use for None as an identifier that
is currently totally legal and which would become illegal: it's
conceivable that someone would use None as an attribute name, e.g.

    class C:
        def None(self): pass

    C().None()

--Guido van Rossum (home page: http://www.python.org/~guido/)