blob: 24c02eb2a97dbc49169bd50fed0f82848500437c [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001.. _tut-morecontrol:
2
3***********************
4More Control Flow Tools
5***********************
6
7Besides the :keyword:`while` statement just introduced, Python knows the usual
8control flow statements known from other languages, with some twists.
9
10
11.. _tut-if:
12
13:keyword:`if` Statements
14========================
15
16Perhaps the most well-known statement type is the :keyword:`if` statement. For
17example::
18
19 >>> x = int(raw_input("Please enter an integer: "))
Georg Brandl3ce0dee2008-09-13 17:18:11 +000020 Please enter an integer: 42
Georg Brandl8ec7f652007-08-15 14:28:01 +000021 >>> 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'
Georg Brandl3ce0dee2008-09-13 17:18:11 +000030 ...
31 More
Georg Brandl8ec7f652007-08-15 14:28:01 +000032
33There can be zero or more :keyword:`elif` parts, and the :keyword:`else` part is
34optional. The keyword ':keyword:`elif`' is short for 'else if', and is useful
35to avoid excessive indentation. An :keyword:`if` ... :keyword:`elif` ...
Georg Brandlb19be572007-12-29 10:57:00 +000036:keyword:`elif` ... sequence is a substitute for the ``switch`` or
37``case`` statements found in other languages.
Georg Brandl8ec7f652007-08-15 14:28:01 +000038
39
40.. _tut-for:
41
42:keyword:`for` Statements
43=========================
44
45.. index::
46 statement: for
47 statement: for
48
49The :keyword:`for` statement in Python differs a bit from what you may be used
50to in C or Pascal. Rather than always iterating over an arithmetic progression
51of numbers (like in Pascal), or giving the user the ability to define both the
52iteration step and halting condition (as C), Python's :keyword:`for` statement
53iterates over the items of any sequence (a list or a string), in the order that
54they appear in the sequence. For example (no pun intended):
55
Georg Brandlb19be572007-12-29 10:57:00 +000056.. One suggestion was to give a real C example here, but that may only serve to
57 confuse non-C programmers.
Georg Brandl8ec7f652007-08-15 14:28:01 +000058
59::
60
61 >>> # Measure some strings:
62 ... a = ['cat', 'window', 'defenestrate']
63 >>> for x in a:
64 ... print x, len(x)
Georg Brandlc62ef8b2009-01-03 20:55:06 +000065 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +000066 cat 3
67 window 6
68 defenestrate 12
69
70It is not safe to modify the sequence being iterated over in the loop (this can
71only happen for mutable sequence types, such as lists). If you need to modify
72the list you are iterating over (for example, to duplicate selected items) you
73must iterate over a copy. The slice notation makes this particularly
74convenient::
75
76 >>> for x in a[:]: # make a slice copy of the entire list
77 ... if len(x) > 6: a.insert(0, x)
Georg Brandlc62ef8b2009-01-03 20:55:06 +000078 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +000079 >>> a
80 ['defenestrate', 'cat', 'window', 'defenestrate']
81
82
83.. _tut-range:
84
85The :func:`range` Function
86==========================
87
88If 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
90progressions::
91
92 >>> range(10)
93 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
94
95The given end point is never part of the generated list; ``range(10)`` generates
96a list of 10 values, the legal indices for items of a sequence of length 10. It
97is possible to let the range start at another number, or to specify a different
98increment (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
Georg Brandl34196c82008-12-04 18:54:05 +0000107To iterate over the indices of a sequence, you can combine :func:`range` and
108:func:`len` as follows::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000109
110 >>> a = ['Mary', 'had', 'a', 'little', 'lamb']
111 >>> for i in range(len(a)):
112 ... print i, a[i]
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000113 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000114 0 Mary
115 1 had
116 2 a
117 3 little
118 4 lamb
119
Georg Brandl34196c82008-12-04 18:54:05 +0000120In most such cases, however, it is convenient to use the :func:`enumerate`
121function, see :ref:`tut-loopidioms`.
122
Georg Brandl8ec7f652007-08-15 14:28:01 +0000123
124.. _tut-break:
125
126:keyword:`break` and :keyword:`continue` Statements, and :keyword:`else` Clauses on Loops
127=========================================================================================
128
129The :keyword:`break` statement, like in C, breaks out of the smallest enclosing
130:keyword:`for` or :keyword:`while` loop.
131
132The :keyword:`continue` statement, also borrowed from C, continues with the next
133iteration of the loop.
134
135Loop statements may have an ``else`` clause; it is executed when the loop
136terminates through exhaustion of the list (with :keyword:`for`) or when the
137condition becomes false (with :keyword:`while`), but not when the loop is
138terminated by a :keyword:`break` statement. This is exemplified by the
139following loop, which searches for prime numbers::
140
141 >>> for n in range(2, 10):
142 ... for x in range(2, n):
143 ... if n % x == 0:
144 ... print n, 'equals', x, '*', n/x
145 ... break
Benjamin Peterson80790282008-08-02 03:05:11 +0000146 ... else:
147 ... # loop fell through without finding a factor
148 ... print n, 'is a prime number'
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000149 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000150 2 is a prime number
151 3 is a prime number
152 4 equals 2 * 2
153 5 is a prime number
154 6 equals 2 * 3
155 7 is a prime number
156 8 equals 2 * 4
157 9 equals 3 * 3
158
Georg Brandla350f0f2011-08-08 21:45:13 +0200159(Yes, this is the correct code. Look closely: the ``else`` clause belongs to
160the :keyword:`for` loop, **not** the :keyword:`if` statement.)
161
Georg Brandl8ec7f652007-08-15 14:28:01 +0000162
163.. _tut-pass:
164
165:keyword:`pass` Statements
166==========================
167
168The :keyword:`pass` statement does nothing. It can be used when a statement is
169required syntactically but the program requires no action. For example::
170
171 >>> while True:
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000172 ... pass # Busy-wait for keyboard interrupt (Ctrl+C)
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000173 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000174
Benjamin Peterson42d19e62008-12-24 16:10:05 +0000175This is commonly used for creating minimal classes::
Georg Brandla8bb5502008-11-06 18:49:15 +0000176
Benjamin Peterson42d19e62008-12-24 16:10:05 +0000177 >>> class MyEmptyClass:
Georg Brandla8bb5502008-11-06 18:49:15 +0000178 ... pass
Benjamin Peterson42d19e62008-12-24 16:10:05 +0000179 ...
Georg Brandla8bb5502008-11-06 18:49:15 +0000180
Andrew M. Kuchlingfcdc80b2008-11-06 19:23:02 +0000181Another place :keyword:`pass` can be used is as a place-holder for a function or
Benjamin Peterson42d19e62008-12-24 16:10:05 +0000182conditional body when you are working on new code, allowing you to keep thinking
183at a more abstract level. The :keyword:`pass` is silently ignored::
Georg Brandla8bb5502008-11-06 18:49:15 +0000184
185 >>> def initlog(*args):
Benjamin Peterson42d19e62008-12-24 16:10:05 +0000186 ... pass # Remember to implement this!
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000187 ...
Georg Brandla8bb5502008-11-06 18:49:15 +0000188
Georg Brandl8ec7f652007-08-15 14:28:01 +0000189.. _tut-functions:
190
191Defining Functions
192==================
193
194We can create a function that writes the Fibonacci series to an arbitrary
195boundary::
196
197 >>> def fib(n): # write Fibonacci series up to n
198 ... """Print a Fibonacci series up to n."""
199 ... a, b = 0, 1
Mark Dickinsonf058d2d2009-11-23 16:39:05 +0000200 ... while a < n:
201 ... print a,
Georg Brandl8ec7f652007-08-15 14:28:01 +0000202 ... a, b = b, a+b
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000203 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000204 >>> # Now call the function we just defined:
205 ... fib(2000)
Mark Dickinsonf058d2d2009-11-23 16:39:05 +0000206 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
Georg Brandl8ec7f652007-08-15 14:28:01 +0000207
208.. index::
209 single: documentation strings
210 single: docstrings
211 single: strings, documentation
212
213The keyword :keyword:`def` introduces a function *definition*. It must be
214followed by the function name and the parenthesized list of formal parameters.
215The statements that form the body of the function start at the next line, and
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000216must be indented.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000217
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000218The first statement of the function body can optionally be a string literal;
219this string literal is the function's documentation string, or :dfn:`docstring`.
220(More about docstrings can be found in the section :ref:`tut-docstrings`.)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000221There are tools which use docstrings to automatically produce online or printed
222documentation, or to let the user interactively browse through code; it's good
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000223practice to include docstrings in code that you write, so make a habit of it.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000224
225The *execution* of a function introduces a new symbol table used for the local
226variables of the function. More precisely, all variable assignments in a
227function store the value in the local symbol table; whereas variable references
Georg Brandlaa0de3f2008-01-21 16:51:51 +0000228first look in the local symbol table, then in the local symbol tables of
229enclosing functions, then in the global symbol table, and finally in the table
230of built-in names. Thus, global variables cannot be directly assigned a value
231within a function (unless named in a :keyword:`global` statement), although they
232may be referenced.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000233
234The actual parameters (arguments) to a function call are introduced in the local
235symbol table of the called function when it is called; thus, arguments are
236passed using *call by value* (where the *value* is always an object *reference*,
237not the value of the object). [#]_ When a function calls another function, a new
238local symbol table is created for that call.
239
240A function definition introduces the function name in the current symbol table.
241The value of the function name has a type that is recognized by the interpreter
242as a user-defined function. This value can be assigned to another name which
243can then also be used as a function. This serves as a general renaming
244mechanism::
245
246 >>> fib
247 <function fib at 10042ed0>
248 >>> f = fib
249 >>> f(100)
Mark Dickinsonf058d2d2009-11-23 16:39:05 +0000250 0 1 1 2 3 5 8 13 21 34 55 89
Georg Brandl8ec7f652007-08-15 14:28:01 +0000251
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000252Coming from other languages, you might object that ``fib`` is not a function but
253a procedure since it doesn't return a value. In fact, even functions without a
254:keyword:`return` statement do return a value, albeit a rather boring one. This
255value is called ``None`` (it's a built-in name). Writing the value ``None`` is
256normally suppressed by the interpreter if it would be the only value written.
257You can see it if you really want to using :keyword:`print`::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000258
Georg Brandl706132b2007-10-30 17:57:12 +0000259 >>> fib(0)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000260 >>> print fib(0)
261 None
262
263It is simple to write a function that returns a list of the numbers of the
264Fibonacci series, instead of printing it::
265
266 >>> def fib2(n): # return Fibonacci series up to n
267 ... """Return a list containing the Fibonacci series up to n."""
268 ... result = []
269 ... a, b = 0, 1
Mark Dickinsonf058d2d2009-11-23 16:39:05 +0000270 ... while a < n:
271 ... result.append(a) # see below
Georg Brandl8ec7f652007-08-15 14:28:01 +0000272 ... a, b = b, a+b
273 ... return result
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000274 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000275 >>> f100 = fib2(100) # call it
276 >>> f100 # write the result
Mark Dickinsonf058d2d2009-11-23 16:39:05 +0000277 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Georg Brandl8ec7f652007-08-15 14:28:01 +0000278
279This example, as usual, demonstrates some new Python features:
280
281* The :keyword:`return` statement returns with a value from a function.
282 :keyword:`return` without an expression argument returns ``None``. Falling off
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000283 the end of a function also returns ``None``.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000284
Mark Dickinsonf058d2d2009-11-23 16:39:05 +0000285* The statement ``result.append(a)`` calls a *method* of the list object
Georg Brandl8ec7f652007-08-15 14:28:01 +0000286 ``result``. A method is a function that 'belongs' to an object and is named
287 ``obj.methodname``, where ``obj`` is some object (this may be an expression),
288 and ``methodname`` is the name of a method that is defined by the object's type.
289 Different types define different methods. Methods of different types may have
290 the same name without causing ambiguity. (It is possible to define your own
Georg Brandle3b9b5e2009-06-06 17:51:31 +0000291 object types and methods, using *classes*, see :ref:`tut-classes`)
Georg Brandl8ec7f652007-08-15 14:28:01 +0000292 The method :meth:`append` shown in the example is defined for list objects; it
293 adds a new element at the end of the list. In this example it is equivalent to
Mark Dickinsonf058d2d2009-11-23 16:39:05 +0000294 ``result = result + [a]``, but more efficient.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000295
296
297.. _tut-defining:
298
299More on Defining Functions
300==========================
301
302It is also possible to define functions with a variable number of arguments.
303There are three forms, which can be combined.
304
305
306.. _tut-defaultargs:
307
308Default Argument Values
309-----------------------
310
311The most useful form is to specify a default value for one or more arguments.
312This creates a function that can be called with fewer arguments than it is
313defined to allow. For example::
314
315 def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
316 while True:
317 ok = raw_input(prompt)
Georg Brandl4c324b92009-06-06 17:50:05 +0000318 if ok in ('y', 'ye', 'yes'):
319 return True
320 if ok in ('n', 'no', 'nop', 'nope'):
321 return False
Georg Brandl8ec7f652007-08-15 14:28:01 +0000322 retries = retries - 1
Georg Brandl4c324b92009-06-06 17:50:05 +0000323 if retries < 0:
324 raise IOError('refusenik user')
Georg Brandl8ec7f652007-08-15 14:28:01 +0000325 print complaint
326
Georg Brandl4c324b92009-06-06 17:50:05 +0000327This function can be called in several ways:
328
329* giving only the mandatory argument:
330 ``ask_ok('Do you really want to quit?')``
331* giving one of the optional arguments:
332 ``ask_ok('OK to overwrite the file?', 2)``
333* or even giving all arguments:
334 ``ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')``
Georg Brandl8ec7f652007-08-15 14:28:01 +0000335
336This example also introduces the :keyword:`in` keyword. This tests whether or
337not a sequence contains a certain value.
338
339The default values are evaluated at the point of function definition in the
340*defining* scope, so that ::
341
342 i = 5
343
344 def f(arg=i):
345 print arg
346
347 i = 6
348 f()
349
350will print ``5``.
351
352**Important warning:** The default value is evaluated only once. This makes a
353difference when the default is a mutable object such as a list, dictionary, or
354instances of most classes. For example, the following function accumulates the
355arguments passed to it on subsequent calls::
356
357 def f(a, L=[]):
358 L.append(a)
359 return L
360
361 print f(1)
362 print f(2)
363 print f(3)
364
365This will print ::
366
367 [1]
368 [1, 2]
369 [1, 2, 3]
370
371If you don't want the default to be shared between subsequent calls, you can
372write the function like this instead::
373
374 def f(a, L=None):
375 if L is None:
376 L = []
377 L.append(a)
378 return L
379
380
381.. _tut-keywordargs:
382
383Keyword Arguments
384-----------------
385
Ezio Melotti05a7f0d2011-12-13 15:49:22 +0200386Functions can also be called using :term:`keyword arguments <keyword argument>`
387of the form ``kwarg=value``. For instance, the following function::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000388
389 def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
390 print "-- This parrot wouldn't", action,
391 print "if you put", voltage, "volts through it."
392 print "-- Lovely plumage, the", type
393 print "-- It's", state, "!"
394
Ezio Melotti05a7f0d2011-12-13 15:49:22 +0200395accepts one required argument (``voltage``) and three optional arguments
396(``state``, ``action``, and ``type``). This function can be called in any
397of the following ways::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000398
Ezio Melotti05a7f0d2011-12-13 15:49:22 +0200399 parrot(1000) # 1 positional argument
400 parrot(voltage=1000) # 1 keyword argument
401 parrot(voltage=1000000, action='VOOOOOM') # 2 keyword arguments
402 parrot(action='VOOOOOM', voltage=1000000) # 2 keyword arguments
403 parrot('a million', 'bereft of life', 'jump') # 3 positional arguments
404 parrot('a thousand', state='pushing up the daisies') # 1 positional, 1 keyword
Georg Brandl8ec7f652007-08-15 14:28:01 +0000405
Ezio Melotti05a7f0d2011-12-13 15:49:22 +0200406but all the following calls would be invalid::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000407
408 parrot() # required argument missing
Ezio Melotti05a7f0d2011-12-13 15:49:22 +0200409 parrot(voltage=5.0, 'dead') # non-keyword argument after a keyword argument
410 parrot(110, voltage=220) # duplicate value for the same argument
411 parrot(actor='John Cleese') # unknown keyword argument
Georg Brandl8ec7f652007-08-15 14:28:01 +0000412
Ezio Melotti05a7f0d2011-12-13 15:49:22 +0200413In a function call, keyword arguments must follow positional arguments.
414All the keyword arguments passed must match one of the arguments
415accepted by the function (e.g. ``actor`` is not a valid argument for the
416``parrot`` function), and their order is not important. This also includes
417non-optional arguments (e.g. ``parrot(voltage=1000)`` is valid too).
418No argument may receive a value more than once.
419Here's an example that fails due to this restriction::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000420
421 >>> def function(a):
422 ... pass
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000423 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000424 >>> function(0, a=0)
425 Traceback (most recent call last):
426 File "<stdin>", line 1, in ?
427 TypeError: function() got multiple values for keyword argument 'a'
428
429When a final formal parameter of the form ``**name`` is present, it receives a
430dictionary (see :ref:`typesmapping`) containing all keyword arguments except for
431those corresponding to a formal parameter. This may be combined with a formal
432parameter of the form ``*name`` (described in the next subsection) which
433receives a tuple containing the positional arguments beyond the formal parameter
434list. (``*name`` must occur before ``**name``.) For example, if we define a
435function like this::
436
437 def cheeseshop(kind, *arguments, **keywords):
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000438 print "-- Do you have any", kind, "?"
Georg Brandl8ec7f652007-08-15 14:28:01 +0000439 print "-- I'm sorry, we're all out of", kind
Georg Brandl78f11ed2010-11-26 07:34:20 +0000440 for arg in arguments:
441 print arg
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000442 print "-" * 40
Georg Brandl44c3ceb2010-10-15 15:31:09 +0000443 keys = sorted(keywords.keys())
444 for kw in keys:
445 print kw, ":", keywords[kw]
Georg Brandl8ec7f652007-08-15 14:28:01 +0000446
447It could be called like this::
448
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000449 cheeseshop("Limburger", "It's very runny, sir.",
Georg Brandl8ec7f652007-08-15 14:28:01 +0000450 "It's really very, VERY runny, sir.",
Georg Brandl8ec7f652007-08-15 14:28:01 +0000451 shopkeeper='Michael Palin',
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000452 client="John Cleese",
453 sketch="Cheese Shop Sketch")
Georg Brandl8ec7f652007-08-15 14:28:01 +0000454
455and of course it would print::
456
457 -- Do you have any Limburger ?
458 -- I'm sorry, we're all out of Limburger
459 It's very runny, sir.
460 It's really very, VERY runny, sir.
461 ----------------------------------------
462 client : John Cleese
463 shopkeeper : Michael Palin
464 sketch : Cheese Shop Sketch
465
Ezio Melottibfbd1a22011-05-17 05:39:22 +0300466Note that the list of keyword argument names is created by sorting the result
467of the keywords dictionary's ``keys()`` method before printing its contents;
468if this is not done, the order in which the arguments are printed is undefined.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000469
470.. _tut-arbitraryargs:
471
472Arbitrary Argument Lists
473------------------------
474
Andrew M. Kuchling3822af62008-04-15 13:10:07 +0000475.. index::
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000476 statement: *
Andrew M. Kuchling3822af62008-04-15 13:10:07 +0000477
Georg Brandl8ec7f652007-08-15 14:28:01 +0000478Finally, the least frequently used option is to specify that a function can be
479called with an arbitrary number of arguments. These arguments will be wrapped
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000480up in a tuple (see :ref:`tut-tuples`). Before the variable number of arguments,
481zero or more normal arguments may occur. ::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000482
Benjamin Petersondee01d82008-05-28 11:51:41 +0000483 def write_multiple_items(file, separator, *args):
484 file.write(separator.join(args))
Georg Brandl8ec7f652007-08-15 14:28:01 +0000485
486
487.. _tut-unpacking-arguments:
488
489Unpacking Argument Lists
490------------------------
491
492The reverse situation occurs when the arguments are already in a list or tuple
493but need to be unpacked for a function call requiring separate positional
494arguments. For instance, the built-in :func:`range` function expects separate
495*start* and *stop* arguments. If they are not available separately, write the
496function call with the ``*``\ -operator to unpack the arguments out of a list
497or tuple::
498
499 >>> range(3, 6) # normal call with separate arguments
500 [3, 4, 5]
501 >>> args = [3, 6]
502 >>> range(*args) # call with arguments unpacked from a list
503 [3, 4, 5]
504
Andrew M. Kuchling3822af62008-04-15 13:10:07 +0000505.. index::
506 statement: **
507
Georg Brandl8ec7f652007-08-15 14:28:01 +0000508In the same fashion, dictionaries can deliver keyword arguments with the ``**``\
509-operator::
510
511 >>> def parrot(voltage, state='a stiff', action='voom'):
512 ... print "-- This parrot wouldn't", action,
513 ... print "if you put", voltage, "volts through it.",
514 ... print "E's", state, "!"
515 ...
516 >>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
517 >>> parrot(**d)
518 -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
519
520
521.. _tut-lambda:
522
523Lambda Forms
524------------
525
526By popular demand, a few features commonly found in functional programming
527languages like Lisp have been added to Python. With the :keyword:`lambda`
528keyword, small anonymous functions can be created. Here's a function that
529returns the sum of its two arguments: ``lambda a, b: a+b``. Lambda forms can be
530used wherever function objects are required. They are syntactically restricted
531to a single expression. Semantically, they are just syntactic sugar for a
532normal function definition. Like nested function definitions, lambda forms can
533reference variables from the containing scope::
534
535 >>> def make_incrementor(n):
536 ... return lambda x: x + n
537 ...
538 >>> f = make_incrementor(42)
539 >>> f(0)
540 42
541 >>> f(1)
542 43
543
544
545.. _tut-docstrings:
546
547Documentation Strings
548---------------------
549
550.. index::
551 single: docstrings
552 single: documentation strings
553 single: strings, documentation
554
555There are emerging conventions about the content and formatting of documentation
556strings.
557
558The first line should always be a short, concise summary of the object's
559purpose. For brevity, it should not explicitly state the object's name or type,
560since these are available by other means (except if the name happens to be a
561verb describing a function's operation). This line should begin with a capital
562letter and end with a period.
563
564If there are more lines in the documentation string, the second line should be
565blank, visually separating the summary from the rest of the description. The
566following lines should be one or more paragraphs describing the object's calling
567conventions, its side effects, etc.
568
569The Python parser does not strip indentation from multi-line string literals in
570Python, so tools that process documentation have to strip indentation if
571desired. This is done using the following convention. The first non-blank line
572*after* the first line of the string determines the amount of indentation for
573the entire documentation string. (We can't use the first line since it is
574generally adjacent to the string's opening quotes so its indentation is not
575apparent in the string literal.) Whitespace "equivalent" to this indentation is
576then stripped from the start of all lines of the string. Lines that are
577indented less should not occur, but if they occur all their leading whitespace
578should be stripped. Equivalence of whitespace should be tested after expansion
579of tabs (to 8 spaces, normally).
580
581Here is an example of a multi-line docstring::
582
583 >>> def my_function():
584 ... """Do nothing, but document it.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000585 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000586 ... No, really, it doesn't do anything.
587 ... """
588 ... pass
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000589 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000590 >>> print my_function.__doc__
591 Do nothing, but document it.
592
593 No, really, it doesn't do anything.
594
595
Georg Brandl35f88612008-01-06 22:05:40 +0000596.. _tut-codingstyle:
597
598Intermezzo: Coding Style
599========================
600
601.. sectionauthor:: Georg Brandl <georg@python.org>
602.. index:: pair: coding; style
603
604Now that you are about to write longer, more complex pieces of Python, it is a
605good time to talk about *coding style*. Most languages can be written (or more
606concise, *formatted*) in different styles; some are more readable than others.
607Making it easy for others to read your code is always a good idea, and adopting
608a nice coding style helps tremendously for that.
609
Andrew M. Kuchling8c65b1e2008-04-15 13:10:41 +0000610For Python, :pep:`8` has emerged as the style guide that most projects adhere to;
Georg Brandl35f88612008-01-06 22:05:40 +0000611it promotes a very readable and eye-pleasing coding style. Every Python
612developer should read it at some point; here are the most important points
613extracted for you:
614
615* Use 4-space indentation, and no tabs.
616
617 4 spaces are a good compromise between small indentation (allows greater
618 nesting depth) and large indentation (easier to read). Tabs introduce
619 confusion, and are best left out.
620
621* Wrap lines so that they don't exceed 79 characters.
622
623 This helps users with small displays and makes it possible to have several
624 code files side-by-side on larger displays.
625
626* Use blank lines to separate functions and classes, and larger blocks of
627 code inside functions.
628
629* When possible, put comments on a line of their own.
630
631* Use docstrings.
632
633* Use spaces around operators and after commas, but not directly inside
634 bracketing constructs: ``a = f(1, 2) + g(3, 4)``.
635
636* Name your classes and functions consistently; the convention is to use
637 ``CamelCase`` for classes and ``lower_case_with_underscores`` for functions
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000638 and methods. Always use ``self`` as the name for the first method argument
639 (see :ref:`tut-firstclasses` for more on classes and methods).
Georg Brandl35f88612008-01-06 22:05:40 +0000640
641* Don't use fancy encodings if your code is meant to be used in international
642 environments. Plain ASCII works best in any case.
643
Georg Brandl8ec7f652007-08-15 14:28:01 +0000644
645.. rubric:: Footnotes
646
Georg Brandl35f88612008-01-06 22:05:40 +0000647.. [#] Actually, *call by object reference* would be a better description,
648 since if a mutable object is passed, the caller will see any changes the
649 callee makes to it (items inserted into a list).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000650