Playing around with exceptions in Python - Up is Down and True is False


True, False = False, True

The above is a valid statement in Python2 (but not in Python3) and after executing the above statement, Python will return False if you evaluate 1==1 and True if you evaluate 1==2. That's funny. It's hilarious. It pretty much made my day. And in the same vein as the previous post, you can use it to screw around with people. Take a look at the following piece of code.

from utils import *

if True:
    print 1

You expect it to print 1 because the if statement always evaluates to True. But. But. If you placed the earlier True/False switch statement in a file called utils.py, importing from that file will mean that the if statement always evaluates to False and nothing will be printed. Hide the True/False switch in an import statement and watch the world burn!

Let me now give you a little insight into what is happening behind the scenes. My name is Rahul. Calling me something else doesn't change who I am or what I do. Similarly, just calling True as False doesn't change how Python behaves. It just becomes confusing to understand the code is all. For a better understanding of how things work, you should read about how names and bindings work in Python.

Every language has a certain set of keywords that are predefined; def, class, return, if, else, for, to name a few. Trying to create or define a new variable with one of those names, say None, will make Python raise a SyntaxError, informing you that you can't assign anything to None. In Python3, the words True/False were added to these list of keywords, preventing us from calling them anything else (or each other for that matter) [1].

[1]. You can refer to the Python2 and Python3 Standard Library Reference to see that True and False have been added as keywords.

Popular posts from this blog

Arxiv author affiliations using Python

Farewell to Enthought

Elementary (particle physics), my dear Watson