GNU Info

Info Node: (python2.1-tut.info)More on Conditions

(python2.1-tut.info)More on Conditions


Next: Comparing Sequences and Other Types Prev: Dictionaries Up: Data Structures
Enter node , (file) or (file)node

More on Conditions
==================

The conditions used in `while' and `if' statements above can contain
other operators besides comparisons.

The comparison operators `in' and `not in' check whether a value occurs
(does not occur) in a sequence.  The operators `is' and `is not'
compare whether two objects are really the same object; this only
matters for mutable objects like lists.  All comparison operators have
the same priority, which is lower than that of all numerical operators.

Comparisons can be chained: e.g., `a < b == c' tests whether `a' is
less than `b' and moreover `b' equals `c'.

Comparisons may be combined by the Boolean operators `and' and `or',
and the outcome of a comparison (or of any other Boolean expression)
may be negated with `not'.  These all have lower priorities than
comparison operators again; between them, `not' has the highest
priority, and `or' the lowest, so that `A and not B or C' is equivalent
to `(A and (not B)) or C'.  Of course, parentheses can be used to
express the desired composition.

The Boolean operators `and' and `or' are so-called _short-circuit_
operators: their arguments are evaluated from left to right, and
evaluation stops as soon as the outcome is determined.  For example, if
`A' and `C' are true but `B' is false, `A and B and C' does not
evaluate the expression `C'.  In general, the return value of a
short-circuit operator, when used as a general value and not as a
Boolean, is the last evaluated argument.

It is possible to assign the result of a comparison or other Boolean
expression to a variable.  For example,

     >>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
     >>> non_null = string1 or string2 or string3
     >>> non_null
     'Trondheim'

Note that in Python, unlike C, assignment cannot occur inside
expressions.  C programmers may grumble about this, but it avoids a
common class of problems encountered in C programs: typing `=' in an
expression when `==' was intended.


automatically generated by info2www version 1.2.2.9