As a addition to slate explanation,do a test in interactive interpreter.
The 'is' operator is not another way to type '=='.
In most cases the use of == or != is what you want.
Normal way to use is are to test if something is identical to None like a is None or b is not None.
Help on built-in function id in module __builtin__:
id(object) -> integer
Return the identity of an object. This is guaranteed to be unique among
simultaneously existing objects. (Hint: it's the object's memory address.)
>>> name1 = "rahul"
>>> name2 = "rahul"
>>> name1 = [1,2,3]
>>> name2 = [1,2,3]