bpo-32118: Document that, in sequence comparisons, reflexivity means otherwise u… by dubslow · Pull Request #4514 · python/cpython (original) (raw)
…norderable objects are ignored
In sequence comparisons, the enforcement of reflexivity of elements means that only non-identical elements are actually compared. The docs then note, with example, that non-reflexive elements thus always "compare" equal inside the sequence.
This patch adds a second corollary, that non-orderable singletons (e.g. None) will also not break sequence comparison.
Yes, the consequence is logically derivable from the statement "element identity is compared first, and element comparison is performed only for distinct elements", but the first example is given because "For non-reflexive elements, the result is different than for strict element comparison, and may be surprising", which also holds for the example I add here: different from strict element comparison, which may lead to otherwise surprising results (it sure was surprising to me when I expected a list with Nones to fail to compare, hence why I went trawling through the docs). In the manner of the first example, explicit is better than implicit, and (I believe) it will be helpful for readers to have this second consequence demonstrated.
!!! If this is a backport PR (PR made against branches other than master
),
please ensure that the PR title is in the following format:
[X.Y] <title from the original PR> (GH-NNNN)
Where: [X.Y] is the branch name, e.g. [3.6].
GH-NNNN refers to the PR number from master
.
PLEASE: Remove this headline!!!