@@ -1906,28 +1906,30 @@ In the standard library code, you will see several common patterns for
1906
1906
correctly using identity tests:
1907
1907
1908
1908
1) As recommended by :pep: `8 `, an identity test is the preferred way to check
1909
- for ``None ``. This reads like plain English in code and avoids confusion with
1910
- other objects that may have boolean values that evaluate to false.
1909
+ for ``None ``. This reads like plain English in code and avoids confusion
1910
+ with other objects that may have boolean values that evaluate to false.
1911
1911
1912
1912
2) Detecting optional arguments can be tricky when ``None `` is a valid input
1913
- value. In those situations, you can create a singleton sentinel object
1914
- guaranteed to be distinct from other objects. For example, here is how
1915
- to implement a method that behaves like :meth: `dict.pop `: :
1913
+ value. In those situations, you can create a singleton sentinel object
1914
+ guaranteed to be distinct from other objects. For example, here is how
1915
+ to implement a method that behaves like :meth: `dict.pop `:
1916
1916
1917
- _sentinel = object()
1917
+ .. code-block :: python
1918
1918
1919
- def pop(self, key, default=_sentinel):
1920
- if key in self:
1921
- value = self[key]
1922
- del self[key]
1923
- return value
1924
- if default is _sentinel:
1925
- raise KeyError(key)
1926
- return default
1919
+ _sentinel = object ()
1920
+
1921
+ def pop (self , key , default = _sentinel):
1922
+ if key in self :
1923
+ value = self [key]
1924
+ del self [key]
1925
+ return value
1926
+ if default is _sentinel:
1927
+ raise KeyError (key)
1928
+ return default
1927
1929
1928
1930
3) Container implementations sometimes need to augment equality tests with
1929
- identity tests. This prevents the code from being confused by objects such as
1930
- ``float('NaN') `` that are not equal to themselves.
1931
+ identity tests. This prevents the code from being confused by objects
1932
+ such as ``float('NaN') `` that are not equal to themselves.
1931
1933
1932
1934
For example, here is the implementation of
1933
1935
:meth: `!collections.abc.Sequence.__contains__ `::
0 commit comments