Overriding True and False ?
Chris Angelico
rosuav at gmail.com
Mon Jan 30 02:57:11 EST 2017
On Mon, Jan 30, 2017 at 6:50 PM, Deborah Swanson
<python at 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 at 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 at 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
More information about the Python-list
mailing list