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.
- 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
--Guido van Rossum (home page: http://www.python.org/~guido/)