On 2014-06-09 16:34, Roy Smith wrote:
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:
why the extra type check for str.__contains__()? That seems very unpythonic.
Duck typing, and all that.
When working with strings, it's not entirely the same. For example:
>>> 'oo' in 'foo'
If you iterated over the string, it would return False.