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. -- https://mail.python.org/mailman/listinfo/python-list