None in string => TypeError?

Roy Smith roy at panix.com
Mon Jun 9 11:34:42 EDT 2014


We noticed recently that:

>>> None in 'foo'

raises (at least in Python 2.7)

TypeError: 'in <string>' requires string as left operand, not NoneType

This is surprising.  The description of the 'in' operatator is, 'True if an item of s is equal to x, else False	'.  From that, I would assume it behaves as if it were written:

for item in iterable:
    if item == x:
        return True
else:
    return False

why the extra type check for str.__contains__()?  That seems very unpythonic.  Duck typing, and all that.



More information about the Python-list mailing list