### 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.