[Python-Dev] Code Generation Idea Was: Bytecode idea
Guido van Rossum
guido@python.org
Wed, 26 Feb 2003 10:50:53 -0500
> >> None is moving slowly toward becoming a true constant. Perhaps the
> >> same should be true of True and False.
>
> Guido> Problem with this is that there's currently lots of code out
> Guido> there that was recently modified to read
>
> Guido> try:
> Guido> True
> Guido> except NameError:
> Guido> True = 1
> Guido> False = 0
>
> Guido> That would become a syntax error if True/False were true
> Guido> constants. :-(
>
> Hmmm... Those code blocks would only be executed on older versions of the
> interpreter. Is there some way to use that knowledge to finesse the
> problem? It would be a real hack, but if the compiler recognized precisely
> the above construct (or at least assignment in an except block guarded by
> NameError), it could shut up about the assignment.
You would have to do a fairly significant analysis of all code in the
module to know that there are no assignments to globals True or False
anywhere, *and* you would have to add a heuristic to cope with the
very code fragment above, *and* you would have to have a firm belief
that no other code would do
import foo
foo.True = "True"
I've often mentioned the first item above (per-module code analysis)
as doable, but it's not done.
--Guido van Rossum (home page: http://www.python.org/~guido/)