It's because when the rhs is a string, 'in' tests for a substring rather
than simple containment. E.g. "ab" in "abc" gives True. So here 'in' is not
a collection membership, it only operates on two strings.
On Tue, Apr 3, 2018 at 4:34 PM, Ethan Furman
This behavior was recently brought to my attention [1]:
--> 1 in 'hello' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'in <string>' requires string as left operand, not int
However, in any other collection (set, dict, list, tuple, etc), the answer would be False.
Does anyone remember the reason why an exception is raised in the string instance instead of returning False?
-- ~Ethan~
[1] https://bugs.python.org/msg314900 _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/guido% 40python.org
-- --Guido van Rossum (python.org/~guido)