From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Thu, 30 May 2019 20:41:06 +0000 (-0700) Subject: bpo-30969: Fix docs about the comparison in absence of __contains__ (GH-2761) X-Git-Tag: v3.7.4rc1~81 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e8661c1dabc206bf7fe6e302e38fa426aa734dd0;p=thirdparty%2FPython%2Fcpython.git bpo-30969: Fix docs about the comparison in absence of __contains__ (GH-2761) (cherry picked from commit 2f5b9dcc0a89cbde1499c76df81c36bfd5ef9aa8) Co-authored-by: Antti Haapala --- diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst index 3fb27c8a8031..990600ec1888 100644 --- a/Doc/reference/expressions.rst +++ b/Doc/reference/expressions.rst @@ -1568,14 +1568,15 @@ y`` returns ``True`` if ``y.__contains__(x)`` returns a true value, and ``False`` otherwise. For user-defined classes which do not define :meth:`__contains__` but do define -:meth:`__iter__`, ``x in y`` is ``True`` if some value ``z`` with ``x == z`` is -produced while iterating over ``y``. If an exception is raised during the -iteration, it is as if :keyword:`in` raised that exception. +:meth:`__iter__`, ``x in y`` is ``True`` if some value ``z``, for which the +expression ``x is z or x == z`` is true, is produced while iterating over ``y``. +If an exception is raised during the iteration, it is as if :keyword:`in` raised +that exception. Lastly, the old-style iteration protocol is tried: if a class defines :meth:`__getitem__`, ``x in y`` is ``True`` if and only if there is a non-negative -integer index *i* such that ``x == y[i]``, and all lower integer indices do not -raise :exc:`IndexError` exception. (If any other exception is raised, it is as +integer index *i* such that ``x is y[i] or x == y[i]``, and no lower integer index +raises the :exc:`IndexError` exception. (If any other exception is raised, it is as if :keyword:`in` raised that exception). .. index::