Home | History | Annotate | Download | only in tutorial
      1 .. _tut-morecontrol:
      2 
      3 ***********************
      4 More Control Flow Tools
      5 ***********************
      6 
      7 Besides the :keyword:`while` statement just introduced, Python knows the usual
      8 control flow statements known from other languages, with some twists.
      9 
     10 
     11 .. _tut-if:
     12 
     13 :keyword:`if` Statements
     14 ========================
     15 
     16 Perhaps the most well-known statement type is the :keyword:`if` statement.  For
     17 example::
     18 
     19    >>> x = int(raw_input("Please enter an integer: "))
     20    Please enter an integer: 42
     21    >>> if x < 0:
     22    ...     x = 0
     23    ...     print 'Negative changed to zero'
     24    ... elif x == 0:
     25    ...     print 'Zero'
     26    ... elif x == 1:
     27    ...     print 'Single'
     28    ... else:
     29    ...     print 'More'
     30    ...
     31    More
     32 
     33 There can be zero or more :keyword:`elif` parts, and the :keyword:`else` part is
     34 optional.  The keyword ':keyword:`elif`' is short for 'else if', and is useful
     35 to avoid excessive indentation.  An  :keyword:`if` ... :keyword:`elif` ...
     36 :keyword:`elif` ... sequence is a substitute for the ``switch`` or
     37 ``case`` statements found in other languages.
     38 
     39 
     40 .. _tut-for:
     41 
     42 :keyword:`for` Statements
     43 =========================
     44 
     45 .. index::
     46    statement: for
     47    statement: for
     48 
     49 The :keyword:`for` statement in Python differs a bit from what you may be used
     50 to in C or Pascal.  Rather than always iterating over an arithmetic progression
     51 of numbers (like in Pascal), or giving the user the ability to define both the
     52 iteration step and halting condition (as C), Python's :keyword:`for` statement
     53 iterates over the items of any sequence (a list or a string), in the order that
     54 they appear in the sequence.  For example (no pun intended):
     55 
     56 .. One suggestion was to give a real C example here, but that may only serve to
     57    confuse non-C programmers.
     58 
     59 ::
     60 
     61    >>> # Measure some strings:
     62    ... words = ['cat', 'window', 'defenestrate']
     63    >>> for w in words:
     64    ...     print w, len(w)
     65    ...
     66    cat 3
     67    window 6
     68    defenestrate 12
     69 
     70 If you need to modify the sequence you are iterating over while inside the loop
     71 (for example to duplicate selected items), it is recommended that you first
     72 make a copy.  Iterating over a sequence does not implicitly make a copy.  The
     73 slice notation makes this especially convenient::
     74 
     75    >>> for w in words[:]:  # Loop over a slice copy of the entire list.
     76    ...     if len(w) > 6:
     77    ...         words.insert(0, w)
     78    ...
     79    >>> words
     80    ['defenestrate', 'cat', 'window', 'defenestrate']
     81 
     82 
     83 .. _tut-range:
     84 
     85 The :func:`range` Function
     86 ==========================
     87 
     88 If you do need to iterate over a sequence of numbers, the built-in function
     89 :func:`range` comes in handy.  It generates lists containing arithmetic
     90 progressions::
     91 
     92    >>> range(10)
     93    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     94 
     95 The given end point is never part of the generated list; ``range(10)`` generates
     96 a list of 10 values, the legal indices for items of a sequence of length 10.  It
     97 is possible to let the range start at another number, or to specify a different
     98 increment (even negative; sometimes this is called the 'step')::
     99 
    100    >>> range(5, 10)
    101    [5, 6, 7, 8, 9]
    102    >>> range(0, 10, 3)
    103    [0, 3, 6, 9]
    104    >>> range(-10, -100, -30)
    105    [-10, -40, -70]
    106 
    107 To iterate over the indices of a sequence, you can combine :func:`range` and
    108 :func:`len` as follows::
    109 
    110    >>> a = ['Mary', 'had', 'a', 'little', 'lamb']
    111    >>> for i in range(len(a)):
    112    ...     print i, a[i]
    113    ...
    114    0 Mary
    115    1 had
    116    2 a
    117    3 little
    118    4 lamb
    119 
    120 In most such cases, however, it is convenient to use the :func:`enumerate`
    121 function, see :ref:`tut-loopidioms`.
    122 
    123 
    124 .. _tut-break:
    125 
    126 :keyword:`break` and :keyword:`continue` Statements, and :keyword:`else` Clauses on Loops
    127 =========================================================================================
    128 
    129 The :keyword:`break` statement, like in C, breaks out of the smallest enclosing
    130 :keyword:`for` or :keyword:`while` loop.
    131 
    132 Loop statements may have an ``else`` clause; it is executed when the loop
    133 terminates through exhaustion of the list (with :keyword:`for`) or when the
    134 condition becomes false (with :keyword:`while`), but not when the loop is
    135 terminated by a :keyword:`break` statement.  This is exemplified by the
    136 following loop, which searches for prime numbers::
    137 
    138    >>> for n in range(2, 10):
    139    ...     for x in range(2, n):
    140    ...         if n % x == 0:
    141    ...             print n, 'equals', x, '*', n/x
    142    ...             break
    143    ...     else:
    144    ...         # loop fell through without finding a factor
    145    ...         print n, 'is a prime number'
    146    ...
    147    2 is a prime number
    148    3 is a prime number
    149    4 equals 2 * 2
    150    5 is a prime number
    151    6 equals 2 * 3
    152    7 is a prime number
    153    8 equals 2 * 4
    154    9 equals 3 * 3
    155 
    156 (Yes, this is the correct code.  Look closely: the ``else`` clause belongs to
    157 the :keyword:`for` loop, **not** the :keyword:`if` statement.)
    158 
    159 When used with a loop, the ``else`` clause has more in common with the
    160 ``else`` clause of a :keyword:`try` statement than it does that of
    161 :keyword:`if` statements: a :keyword:`try` statement's ``else`` clause runs
    162 when no exception occurs, and a loop's ``else`` clause runs when no ``break``
    163 occurs. For more on the :keyword:`try` statement and exceptions, see
    164 :ref:`tut-handling`.
    165 
    166 The :keyword:`continue` statement, also borrowed from C, continues with the next
    167 iteration of the loop::
    168 
    169     >>> for num in range(2, 10):
    170     ...     if num % 2 == 0:
    171     ...         print "Found an even number", num
    172     ...         continue
    173     ...     print "Found a number", num
    174     Found an even number 2
    175     Found a number 3
    176     Found an even number 4
    177     Found a number 5
    178     Found an even number 6
    179     Found a number 7
    180     Found an even number 8
    181     Found a number 9
    182 
    183 
    184 .. _tut-pass:
    185 
    186 :keyword:`pass` Statements
    187 ==========================
    188 
    189 The :keyword:`pass` statement does nothing. It can be used when a statement is
    190 required syntactically but the program requires no action. For example::
    191 
    192    >>> while True:
    193    ...     pass  # Busy-wait for keyboard interrupt (Ctrl+C)
    194    ...
    195 
    196 This is commonly used for creating minimal classes::
    197 
    198    >>> class MyEmptyClass:
    199    ...     pass
    200    ...
    201 
    202 Another place :keyword:`pass` can be used is as a place-holder for a function or
    203 conditional body when you are working on new code, allowing you to keep thinking
    204 at a more abstract level.  The :keyword:`pass` is silently ignored::
    205 
    206    >>> def initlog(*args):
    207    ...     pass   # Remember to implement this!
    208    ...
    209 
    210 .. _tut-functions:
    211 
    212 Defining Functions
    213 ==================
    214 
    215 We can create a function that writes the Fibonacci series to an arbitrary
    216 boundary::
    217 
    218    >>> def fib(n):    # write Fibonacci series up to n
    219    ...     """Print a Fibonacci series up to n."""
    220    ...     a, b = 0, 1
    221    ...     while a < n:
    222    ...         print a,
    223    ...         a, b = b, a+b
    224    ...
    225    >>> # Now call the function we just defined:
    226    ... fib(2000)
    227    0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
    228 
    229 .. index::
    230    single: documentation strings
    231    single: docstrings
    232    single: strings, documentation
    233 
    234 The keyword :keyword:`def` introduces a function *definition*.  It must be
    235 followed by the function name and the parenthesized list of formal parameters.
    236 The statements that form the body of the function start at the next line, and
    237 must be indented.
    238 
    239 The first statement of the function body can optionally be a string literal;
    240 this string literal is the function's documentation string, or :dfn:`docstring`.
    241 (More about docstrings can be found in the section :ref:`tut-docstrings`.)
    242 There are tools which use docstrings to automatically produce online or printed
    243 documentation, or to let the user interactively browse through code; it's good
    244 practice to include docstrings in code that you write, so make a habit of it.
    245 
    246 The *execution* of a function introduces a new symbol table used for the local
    247 variables of the function.  More precisely, all variable assignments in a
    248 function store the value in the local symbol table; whereas variable references
    249 first look in the local symbol table, then in the local symbol tables of
    250 enclosing functions, then in the global symbol table, and finally in the table
    251 of built-in names. Thus, global variables cannot be directly assigned a value
    252 within a function (unless named in a :keyword:`global` statement), although they
    253 may be referenced.
    254 
    255 The actual parameters (arguments) to a function call are introduced in the local
    256 symbol table of the called function when it is called; thus, arguments are
    257 passed using *call by value* (where the *value* is always an object *reference*,
    258 not the value of the object). [#]_ When a function calls another function, a new
    259 local symbol table is created for that call.
    260 
    261 A function definition introduces the function name in the current symbol table.
    262 The value of the function name has a type that is recognized by the interpreter
    263 as a user-defined function.  This value can be assigned to another name which
    264 can then also be used as a function.  This serves as a general renaming
    265 mechanism::
    266 
    267    >>> fib
    268    <function fib at 10042ed0>
    269    >>> f = fib
    270    >>> f(100)
    271    0 1 1 2 3 5 8 13 21 34 55 89
    272 
    273 Coming from other languages, you might object that ``fib`` is not a function but
    274 a procedure since it doesn't return a value.  In fact, even functions without a
    275 :keyword:`return` statement do return a value, albeit a rather boring one.  This
    276 value is called ``None`` (it's a built-in name).  Writing the value ``None`` is
    277 normally suppressed by the interpreter if it would be the only value written.
    278 You can see it if you really want to using :keyword:`print`::
    279 
    280    >>> fib(0)
    281    >>> print fib(0)
    282    None
    283 
    284 It is simple to write a function that returns a list of the numbers of the
    285 Fibonacci series, instead of printing it::
    286 
    287    >>> def fib2(n):  # return Fibonacci series up to n
    288    ...     """Return a list containing the Fibonacci series up to n."""
    289    ...     result = []
    290    ...     a, b = 0, 1
    291    ...     while a < n:
    292    ...         result.append(a)    # see below
    293    ...         a, b = b, a+b
    294    ...     return result
    295    ...
    296    >>> f100 = fib2(100)    # call it
    297    >>> f100                # write the result
    298    [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
    299 
    300 This example, as usual, demonstrates some new Python features:
    301 
    302 * The :keyword:`return` statement returns with a value from a function.
    303   :keyword:`return` without an expression argument returns ``None``. Falling off
    304   the end of a function also returns ``None``.
    305 
    306 * The statement ``result.append(a)`` calls a *method* of the list object
    307   ``result``.  A method is a function that 'belongs' to an object and is named
    308   ``obj.methodname``, where ``obj`` is some object (this may be an expression),
    309   and ``methodname`` is the name of a method that is defined by the object's type.
    310   Different types define different methods.  Methods of different types may have
    311   the same name without causing ambiguity.  (It is possible to define your own
    312   object types and methods, using *classes*, see :ref:`tut-classes`)
    313   The method :meth:`append` shown in the example is defined for list objects; it
    314   adds a new element at the end of the list.  In this example it is equivalent to
    315   ``result = result + [a]``, but more efficient.
    316 
    317 
    318 .. _tut-defining:
    319 
    320 More on Defining Functions
    321 ==========================
    322 
    323 It is also possible to define functions with a variable number of arguments.
    324 There are three forms, which can be combined.
    325 
    326 
    327 .. _tut-defaultargs:
    328 
    329 Default Argument Values
    330 -----------------------
    331 
    332 The most useful form is to specify a default value for one or more arguments.
    333 This creates a function that can be called with fewer arguments than it is
    334 defined to allow.  For example::
    335 
    336    def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
    337        while True:
    338            ok = raw_input(prompt)
    339            if ok in ('y', 'ye', 'yes'):
    340                return True
    341            if ok in ('n', 'no', 'nop', 'nope'):
    342                return False
    343            retries = retries - 1
    344            if retries < 0:
    345                raise IOError('refusenik user')
    346            print complaint
    347 
    348 This function can be called in several ways:
    349 
    350 * giving only the mandatory argument:
    351   ``ask_ok('Do you really want to quit?')``
    352 * giving one of the optional arguments:
    353   ``ask_ok('OK to overwrite the file?', 2)``
    354 * or even giving all arguments:
    355   ``ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')``
    356 
    357 This example also introduces the :keyword:`in` keyword. This tests whether or
    358 not a sequence contains a certain value.
    359 
    360 The default values are evaluated at the point of function definition in the
    361 *defining* scope, so that ::
    362 
    363    i = 5
    364 
    365    def f(arg=i):
    366        print arg
    367 
    368    i = 6
    369    f()
    370 
    371 will print ``5``.
    372 
    373 **Important warning:**  The default value is evaluated only once. This makes a
    374 difference when the default is a mutable object such as a list, dictionary, or
    375 instances of most classes.  For example, the following function accumulates the
    376 arguments passed to it on subsequent calls::
    377 
    378    def f(a, L=[]):
    379        L.append(a)
    380        return L
    381 
    382    print f(1)
    383    print f(2)
    384    print f(3)
    385 
    386 This will print ::
    387 
    388    [1]
    389    [1, 2]
    390    [1, 2, 3]
    391 
    392 If you don't want the default to be shared between subsequent calls, you can
    393 write the function like this instead::
    394 
    395    def f(a, L=None):
    396        if L is None:
    397            L = []
    398        L.append(a)
    399        return L
    400 
    401 
    402 .. _tut-keywordargs:
    403 
    404 Keyword Arguments
    405 -----------------
    406 
    407 Functions can also be called using :term:`keyword arguments <keyword argument>`
    408 of the form ``kwarg=value``.  For instance, the following function::
    409 
    410    def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
    411        print "-- This parrot wouldn't", action,
    412        print "if you put", voltage, "volts through it."
    413        print "-- Lovely plumage, the", type
    414        print "-- It's", state, "!"
    415 
    416 accepts one required argument (``voltage``) and three optional arguments
    417 (``state``, ``action``, and ``type``).  This function can be called in any
    418 of the following ways::
    419 
    420    parrot(1000)                                          # 1 positional argument
    421    parrot(voltage=1000)                                  # 1 keyword argument
    422    parrot(voltage=1000000, action='VOOOOOM')             # 2 keyword arguments
    423    parrot(action='VOOOOOM', voltage=1000000)             # 2 keyword arguments
    424    parrot('a million', 'bereft of life', 'jump')         # 3 positional arguments
    425    parrot('a thousand', state='pushing up the daisies')  # 1 positional, 1 keyword
    426 
    427 but all the following calls would be invalid::
    428 
    429    parrot()                     # required argument missing
    430    parrot(voltage=5.0, 'dead')  # non-keyword argument after a keyword argument
    431    parrot(110, voltage=220)     # duplicate value for the same argument
    432    parrot(actor='John Cleese')  # unknown keyword argument
    433 
    434 In a function call, keyword arguments must follow positional arguments.
    435 All the keyword arguments passed must match one of the arguments
    436 accepted by the function (e.g. ``actor`` is not a valid argument for the
    437 ``parrot`` function), and their order is not important.  This also includes
    438 non-optional arguments (e.g. ``parrot(voltage=1000)`` is valid too).
    439 No argument may receive a value more than once.
    440 Here's an example that fails due to this restriction::
    441 
    442    >>> def function(a):
    443    ...     pass
    444    ...
    445    >>> function(0, a=0)
    446    Traceback (most recent call last):
    447      File "<stdin>", line 1, in ?
    448    TypeError: function() got multiple values for keyword argument 'a'
    449 
    450 When a final formal parameter of the form ``**name`` is present, it receives a
    451 dictionary (see :ref:`typesmapping`) containing all keyword arguments except for
    452 those corresponding to a formal parameter.  This may be combined with a formal
    453 parameter of the form ``*name`` (described in the next subsection) which
    454 receives a tuple containing the positional arguments beyond the formal parameter
    455 list.  (``*name`` must occur before ``**name``.) For example, if we define a
    456 function like this::
    457 
    458    def cheeseshop(kind, *arguments, **keywords):
    459        print "-- Do you have any", kind, "?"
    460        print "-- I'm sorry, we're all out of", kind
    461        for arg in arguments:
    462            print arg
    463        print "-" * 40
    464        keys = sorted(keywords.keys())
    465        for kw in keys:
    466            print kw, ":", keywords[kw]
    467 
    468 It could be called like this::
    469 
    470    cheeseshop("Limburger", "It's very runny, sir.",
    471               "It's really very, VERY runny, sir.",
    472               shopkeeper='Michael Palin',
    473               client="John Cleese",
    474               sketch="Cheese Shop Sketch")
    475 
    476 and of course it would print:
    477 
    478 .. code-block:: none
    479 
    480    -- Do you have any Limburger ?
    481    -- I'm sorry, we're all out of Limburger
    482    It's very runny, sir.
    483    It's really very, VERY runny, sir.
    484    ----------------------------------------
    485    client : John Cleese
    486    shopkeeper : Michael Palin
    487    sketch : Cheese Shop Sketch
    488 
    489 Note that the list of keyword argument names is created by sorting the result
    490 of the keywords dictionary's ``keys()`` method before printing its contents;
    491 if this is not done, the order in which the arguments are printed is undefined.
    492 
    493 .. _tut-arbitraryargs:
    494 
    495 Arbitrary Argument Lists
    496 ------------------------
    497 
    498 .. index::
    499   statement: *
    500 
    501 Finally, the least frequently used option is to specify that a function can be
    502 called with an arbitrary number of arguments.  These arguments will be wrapped
    503 up in a tuple (see :ref:`tut-tuples`).  Before the variable number of arguments,
    504 zero or more normal arguments may occur. ::
    505 
    506    def write_multiple_items(file, separator, *args):
    507        file.write(separator.join(args))
    508 
    509 
    510 .. _tut-unpacking-arguments:
    511 
    512 Unpacking Argument Lists
    513 ------------------------
    514 
    515 The reverse situation occurs when the arguments are already in a list or tuple
    516 but need to be unpacked for a function call requiring separate positional
    517 arguments.  For instance, the built-in :func:`range` function expects separate
    518 *start* and *stop* arguments.  If they are not available separately, write the
    519 function call with the  ``*``\ -operator to unpack the arguments out of a list
    520 or tuple::
    521 
    522    >>> range(3, 6)             # normal call with separate arguments
    523    [3, 4, 5]
    524    >>> args = [3, 6]
    525    >>> range(*args)            # call with arguments unpacked from a list
    526    [3, 4, 5]
    527 
    528 .. index::
    529   statement: **
    530 
    531 In the same fashion, dictionaries can deliver keyword arguments with the ``**``\
    532 -operator::
    533 
    534    >>> def parrot(voltage, state='a stiff', action='voom'):
    535    ...     print "-- This parrot wouldn't", action,
    536    ...     print "if you put", voltage, "volts through it.",
    537    ...     print "E's", state, "!"
    538    ...
    539    >>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
    540    >>> parrot(**d)
    541    -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
    542 
    543 
    544 .. _tut-lambda:
    545 
    546 Lambda Expressions
    547 ------------------
    548 
    549 Small anonymous functions can be created with the :keyword:`lambda` keyword.
    550 This function returns the sum of its two arguments: ``lambda a, b: a+b``.
    551 Lambda functions can be used wherever function objects are required.  They are
    552 syntactically restricted to a single expression.  Semantically, they are just
    553 syntactic sugar for a normal function definition.  Like nested function
    554 definitions, lambda functions can reference variables from the containing
    555 scope::
    556 
    557    >>> def make_incrementor(n):
    558    ...     return lambda x: x + n
    559    ...
    560    >>> f = make_incrementor(42)
    561    >>> f(0)
    562    42
    563    >>> f(1)
    564    43
    565 
    566 The above example uses a lambda expression to return a function.  Another use
    567 is to pass a small function as an argument::
    568 
    569    >>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
    570    >>> pairs.sort(key=lambda pair: pair[1])
    571    >>> pairs
    572    [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
    573 
    574 
    575 .. _tut-docstrings:
    576 
    577 Documentation Strings
    578 ---------------------
    579 
    580 .. index::
    581    single: docstrings
    582    single: documentation strings
    583    single: strings, documentation
    584 
    585 There are emerging conventions about the content and formatting of documentation
    586 strings.
    587 
    588 The first line should always be a short, concise summary of the object's
    589 purpose.  For brevity, it should not explicitly state the object's name or type,
    590 since these are available by other means (except if the name happens to be a
    591 verb describing a function's operation).  This line should begin with a capital
    592 letter and end with a period.
    593 
    594 If there are more lines in the documentation string, the second line should be
    595 blank, visually separating the summary from the rest of the description.  The
    596 following lines should be one or more paragraphs describing the object's calling
    597 conventions, its side effects, etc.
    598 
    599 The Python parser does not strip indentation from multi-line string literals in
    600 Python, so tools that process documentation have to strip indentation if
    601 desired.  This is done using the following convention. The first non-blank line
    602 *after* the first line of the string determines the amount of indentation for
    603 the entire documentation string.  (We can't use the first line since it is
    604 generally adjacent to the string's opening quotes so its indentation is not
    605 apparent in the string literal.)  Whitespace "equivalent" to this indentation is
    606 then stripped from the start of all lines of the string.  Lines that are
    607 indented less should not occur, but if they occur all their leading whitespace
    608 should be stripped.  Equivalence of whitespace should be tested after expansion
    609 of tabs (to 8 spaces, normally).
    610 
    611 Here is an example of a multi-line docstring::
    612 
    613    >>> def my_function():
    614    ...     """Do nothing, but document it.
    615    ...
    616    ...     No, really, it doesn't do anything.
    617    ...     """
    618    ...     pass
    619    ...
    620    >>> print my_function.__doc__
    621    Do nothing, but document it.
    622 
    623        No, really, it doesn't do anything.
    624 
    625 
    626 .. _tut-codingstyle:
    627 
    628 Intermezzo: Coding Style
    629 ========================
    630 
    631 .. sectionauthor:: Georg Brandl <georg (a] python.org>
    632 .. index:: pair: coding; style
    633 
    634 Now that you are about to write longer, more complex pieces of Python, it is a
    635 good time to talk about *coding style*.  Most languages can be written (or more
    636 concise, *formatted*) in different styles; some are more readable than others.
    637 Making it easy for others to read your code is always a good idea, and adopting
    638 a nice coding style helps tremendously for that.
    639 
    640 For Python, :pep:`8` has emerged as the style guide that most projects adhere to;
    641 it promotes a very readable and eye-pleasing coding style.  Every Python
    642 developer should read it at some point; here are the most important points
    643 extracted for you:
    644 
    645 * Use 4-space indentation, and no tabs.
    646 
    647   4 spaces are a good compromise between small indentation (allows greater
    648   nesting depth) and large indentation (easier to read).  Tabs introduce
    649   confusion, and are best left out.
    650 
    651 * Wrap lines so that they don't exceed 79 characters.
    652 
    653   This helps users with small displays and makes it possible to have several
    654   code files side-by-side on larger displays.
    655 
    656 * Use blank lines to separate functions and classes, and larger blocks of
    657   code inside functions.
    658 
    659 * When possible, put comments on a line of their own.
    660 
    661 * Use docstrings.
    662 
    663 * Use spaces around operators and after commas, but not directly inside
    664   bracketing constructs: ``a = f(1, 2) + g(3, 4)``.
    665 
    666 * Name your classes and functions consistently; the convention is to use
    667   ``CamelCase`` for classes and ``lower_case_with_underscores`` for functions
    668   and methods.  Always use ``self`` as the name for the first method argument
    669   (see :ref:`tut-firstclasses` for more on classes and methods).
    670 
    671 * Don't use fancy encodings if your code is meant to be used in international
    672   environments.  Plain ASCII works best in any case.
    673 
    674 
    675 .. rubric:: Footnotes
    676 
    677 .. [#] Actually, *call by object reference* would be a better description,
    678    since if a mutable object is passed, the caller will see any changes the
    679    callee makes to it (items inserted into a list).
    680 
    681