Difference between 'is' and '=='

Max M maxm at mxm.dk
Wed Mar 29 05:01:18 EST 2006


Joel Hedlund wrote:
>> There's no requirement that the socket module or
>> anything else return values using the same object that the
>> socket.AF_UNIX constant uses.
> 
> 
> Ouch. That's certainly an eyeopener.
> 
> For me, this means several things, and I'd really like to hear people's 
> thoughts about them.
> 
> It basically boils down to "don't ever use 'is' unless pushed into a 
> corner, and nevermind what PEP8 says about it".



Identity checks are often used for checking input parameters of a function:

def somefunc(val=None):
     if val is None:
         val = []
     do_stuff(val)



Or if None is a possible parameter you can use your own object as a marker::

_marker = []

def somefunc(val=_marker):
     if val is marker:
         val = []
     do_stuff(val)



-- 

hilsen/regards Max M, Denmark

http://www.mxm.dk/
IT's Mad Science

Phone:  +45 66 11 84 94
Mobile: +45 29 93 42 96



More information about the Python-list mailing list