diff options
author | Peter Thomassen <peterthomassen@users.noreply.github.com> | 2017-07-29 19:18:13 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2017-07-29 19:18:13 (GMT) |
commit | caa1280d1ee5f828f346b585169a7592371d3faa (patch) | |
tree | 6540b814fe0ff038a8a5cf598c9a5336eaa9490d /Doc | |
parent | ceb93f4540981e3f9af66bd936920186aba813fc (diff) | |
download | cpython-caa1280d1ee5f828f346b585169a7592371d3faa.zip cpython-caa1280d1ee5f828f346b585169a7592371d3faa.tar.gz cpython-caa1280d1ee5f828f346b585169a7592371d3faa.tar.bz2 |
bpo-30803: clarify truth value testing documentation (#2508)
Initial patch by Peter Thomassen.
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/library/stdtypes.rst | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 564579e..2fce851 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -39,31 +39,26 @@ Truth Value Testing single: false Any object can be tested for truth value, for use in an :keyword:`if` or -:keyword:`while` condition or as operand of the Boolean operations below. The -following values are considered false: +:keyword:`while` condition or as operand of the Boolean operations below. - .. index:: single: None (Built-in object) - -* ``None`` - - .. index:: single: False (Built-in object) - -* ``False`` - -* zero of any numeric type, for example, ``0``, ``0.0``, ``0j``. +.. index:: single: true -* any empty sequence, for example, ``''``, ``()``, ``[]``. +By default, an object is considered true unless its class defines either a +:meth:`__bool__` method that returns ``False`` or a :meth:`__len__` method that +returns zero, when called with the object. [1]_ Here are most of the built-in +objects considered false: -* any empty mapping, for example, ``{}``. + .. index:: + single: None (Built-in object) + single: False (Built-in object) -* instances of user-defined classes, if the class defines a :meth:`__bool__` or - :meth:`__len__` method, when that method returns the integer zero or - :class:`bool` value ``False``. [1]_ +* constants defined to be false: ``None`` and ``False``. -.. index:: single: true +* zero of any numeric type: ``0``, ``0.0``, ``0j``, ``Decimal(0)``, + ``Fraction(0, 1)`` -All other values are considered true --- so objects of many types are always -true. +* empty sequences and collections: ``''``, ``()``, ``[]``, ``{}``, ``set()``, + ``range(0)`` .. index:: operator: or |