[Python-Dev] Compiler treats None both as a constant and variable
Guido van Rossum
guido@python.org
Sun, 30 Mar 2003 14:02:38 -0500
> >>> def f():
> None
>
> >>> dis(f)
> 2 0 LOAD_GLOBAL 0 (None)
> 3 POP_TOP
> 4 LOAD_CONST 0 (None)
> 7 RETURN_VALUE
>
> >>> None = 1
> <stdin>:1: SyntaxWarning: assignment to None
> >>> f() == None
> False
>
>
> Is this a bug?
Yes, assigning to None is a bug. :-)
> Should the compiler use the GLOBAL in both places?
No, not until we've officially changed the rules.
> Or, is it reasonable to use CONST in both places?
No, not until assigning to None is an error rather than a warning.
This will have to wait until at least 2.4 -- the warning is new in
2.3.
--Guido van Rossum (home page: http://www.python.org/~guido/)