The expression ``x and y`` first evaluates *x*; if *x* is false, its
value is returned; otherwise, *y* is evaluated and the resulting value
is returned.
and 的help解释全文如下:
Boolean operations
******************
or_test ::= and_test | or_test "or" and_test
and_test ::= not_test | and_test "and" not_test
not_test ::= comparison | "not" not_test
In the context of Boolean operations, and also when expressions are
used by control flow statements, the following values are interpreted
as false: ``False``, ``None``, numeric zero of all types, and empty
strings and containers (including strings, tuples, lists,
dictionaries, sets and frozensets). All other values are interpreted
as true. (See the ``__nonzero__()`` special method for a way to
change this.)
The operator ``not`` yields ``True`` if its argument is false,
``False`` otherwise.
The expression ``x and y`` first evaluates *x*; if *x* is false, its
value is returned; otherwise, *y* is evaluated and the resulting value
is returned.
The expression ``x or y`` first evaluates *x*; if *x* is true, its
value is returned; otherwise, *y* is evaluated and the resulting value
is returned.
(Note that neither ``and`` nor ``or`` restrict the value and type they
return to ``False`` and ``True``, but rather return the last evaluated
argument. This is sometimes useful, e.g., if ``s`` is a string that
should be replaced by a default value if it is empty, the expression
``s or 'foo'`` yields the desired value. Because ``not`` has to
invent a value anyway, it does not bother to return a value of the
same type as its argument, so e.g., ``not 'foo'`` yields ``False``,
not ``''``.)
Related help topics: EXPRESSIONS, TRUTHVALUE