On Mon, Jan 30, 2017 at 6:50 PM, Deborah Swanson <pyt...@deborahswanson.net> wrote: > Looks like the moral of the story is that in Python 2.7 you can redefine > keywords, so long as you don't get any syntax errors after (or during) > redefinition.
The moral is actually that "True" and "False" aren't keywords in Py2. They're just built-ins. Compare: rosuav@sikorsky:~$ python3 Python 3.7.0a0 (default:cebc9c7ad195, Jan 24 2017, 06:55:19) [GCC 6.2.0 20161027] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import dis >>> dis.dis(lambda: True) 1 0 LOAD_CONST 1 (True) 2 RETURN_VALUE >>> rosuav@sikorsky:~$ python Python 2.7.12+ (default, Sep 1 2016, 20:27:38) [GCC 6.2.0 20160927] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import dis >>> dis.dis(lambda: True) 1 0 LOAD_GLOBAL 0 (True) 3 RETURN_VALUE >>> In Python 2, returning "True" involves a name lookup; in Python 3, it's simply a constant - a literal. ChrisA -- https://mail.python.org/mailman/listinfo/python-list