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