blob: 43a83823b6cd535f569c02a04783b727fec41bff [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
386Functions can also be called using keyword arguments of the form ``keyword =
387value``. For instance, the following function::
388
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
395could be called in any of the following ways::
396
397 parrot(1000)
398 parrot(action = 'VOOOOOM', voltage = 1000000)
399 parrot('a thousand', state = 'pushing up the daisies')
400 parrot('a million', 'bereft of life', 'jump')
401
402but the following calls would all be invalid::
403
404 parrot() # required argument missing
405 parrot(voltage=5.0, 'dead') # non-keyword argument following keyword
406 parrot(110, voltage=220) # duplicate value for argument
407 parrot(actor='John Cleese') # unknown keyword
408
409In general, an argument list must have any positional arguments followed by any
410keyword arguments, where the keywords must be chosen from the formal parameter
411names. It's not important whether a formal parameter has a default value or
412not. No argument may receive a value more than once --- formal parameter names
413corresponding to positional arguments cannot be used as keywords in the same
414calls. Here's an example that fails due to this restriction::
415
416 >>> def function(a):
417 ... pass
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000418 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000419 >>> function(0, a=0)
420 Traceback (most recent call last):
421 File "<stdin>", line 1, in ?
422 TypeError: function() got multiple values for keyword argument 'a'
423
424When a final formal parameter of the form ``**name`` is present, it receives a
425dictionary (see :ref:`typesmapping`) containing all keyword arguments except for
426those corresponding to a formal parameter. This may be combined with a formal
427parameter of the form ``*name`` (described in the next subsection) which
428receives a tuple containing the positional arguments beyond the formal parameter
429list. (``*name`` must occur before ``**name``.) For example, if we define a
430function like this::
431
432 def cheeseshop(kind, *arguments, **keywords):
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000433 print "-- Do you have any", kind, "?"
Georg Brandl8ec7f652007-08-15 14:28:01 +0000434 print "-- I'm sorry, we're all out of", kind
Georg Brandl78f11ed2010-11-26 07:34:20 +0000435 for arg in arguments:
436 print arg
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000437 print "-" * 40
Georg Brandl44c3ceb2010-10-15 15:31:09 +0000438 keys = sorted(keywords.keys())
439 for kw in keys:
440 print kw, ":", keywords[kw]
Georg Brandl8ec7f652007-08-15 14:28:01 +0000441
442It could be called like this::
443
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000444 cheeseshop("Limburger", "It's very runny, sir.",
Georg Brandl8ec7f652007-08-15 14:28:01 +0000445 "It's really very, VERY runny, sir.",
Georg Brandl8ec7f652007-08-15 14:28:01 +0000446 shopkeeper='Michael Palin',
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000447 client="John Cleese",
448 sketch="Cheese Shop Sketch")
Georg Brandl8ec7f652007-08-15 14:28:01 +0000449
450and of course it would print::
451
452 -- Do you have any Limburger ?
453 -- I'm sorry, we're all out of Limburger
454 It's very runny, sir.
455 It's really very, VERY runny, sir.
456 ----------------------------------------
457 client : John Cleese
458 shopkeeper : Michael Palin
459 sketch : Cheese Shop Sketch
460
Ezio Melottibfbd1a22011-05-17 05:39:22 +0300461Note that the list of keyword argument names is created by sorting the result
462of the keywords dictionary's ``keys()`` method before printing its contents;
463if this is not done, the order in which the arguments are printed is undefined.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000464
465.. _tut-arbitraryargs:
466
467Arbitrary Argument Lists
468------------------------
469
Andrew M. Kuchling3822af62008-04-15 13:10:07 +0000470.. index::
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000471 statement: *
Andrew M. Kuchling3822af62008-04-15 13:10:07 +0000472
Georg Brandl8ec7f652007-08-15 14:28:01 +0000473Finally, the least frequently used option is to specify that a function can be
474called with an arbitrary number of arguments. These arguments will be wrapped
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000475up in a tuple (see :ref:`tut-tuples`). Before the variable number of arguments,
476zero or more normal arguments may occur. ::
Georg Brandl8ec7f652007-08-15 14:28:01 +0000477
Benjamin Petersondee01d82008-05-28 11:51:41 +0000478 def write_multiple_items(file, separator, *args):
479 file.write(separator.join(args))
Georg Brandl8ec7f652007-08-15 14:28:01 +0000480
481
482.. _tut-unpacking-arguments:
483
484Unpacking Argument Lists
485------------------------
486
487The reverse situation occurs when the arguments are already in a list or tuple
488but need to be unpacked for a function call requiring separate positional
489arguments. For instance, the built-in :func:`range` function expects separate
490*start* and *stop* arguments. If they are not available separately, write the
491function call with the ``*``\ -operator to unpack the arguments out of a list
492or tuple::
493
494 >>> range(3, 6) # normal call with separate arguments
495 [3, 4, 5]
496 >>> args = [3, 6]
497 >>> range(*args) # call with arguments unpacked from a list
498 [3, 4, 5]
499
Andrew M. Kuchling3822af62008-04-15 13:10:07 +0000500.. index::
501 statement: **
502
Georg Brandl8ec7f652007-08-15 14:28:01 +0000503In the same fashion, dictionaries can deliver keyword arguments with the ``**``\
504-operator::
505
506 >>> def parrot(voltage, state='a stiff', action='voom'):
507 ... print "-- This parrot wouldn't", action,
508 ... print "if you put", voltage, "volts through it.",
509 ... print "E's", state, "!"
510 ...
511 >>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
512 >>> parrot(**d)
513 -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
514
515
516.. _tut-lambda:
517
518Lambda Forms
519------------
520
521By popular demand, a few features commonly found in functional programming
522languages like Lisp have been added to Python. With the :keyword:`lambda`
523keyword, small anonymous functions can be created. Here's a function that
524returns the sum of its two arguments: ``lambda a, b: a+b``. Lambda forms can be
525used wherever function objects are required. They are syntactically restricted
526to a single expression. Semantically, they are just syntactic sugar for a
527normal function definition. Like nested function definitions, lambda forms can
528reference variables from the containing scope::
529
530 >>> def make_incrementor(n):
531 ... return lambda x: x + n
532 ...
533 >>> f = make_incrementor(42)
534 >>> f(0)
535 42
536 >>> f(1)
537 43
538
539
540.. _tut-docstrings:
541
542Documentation Strings
543---------------------
544
545.. index::
546 single: docstrings
547 single: documentation strings
548 single: strings, documentation
549
550There are emerging conventions about the content and formatting of documentation
551strings.
552
553The first line should always be a short, concise summary of the object's
554purpose. For brevity, it should not explicitly state the object's name or type,
555since these are available by other means (except if the name happens to be a
556verb describing a function's operation). This line should begin with a capital
557letter and end with a period.
558
559If there are more lines in the documentation string, the second line should be
560blank, visually separating the summary from the rest of the description. The
561following lines should be one or more paragraphs describing the object's calling
562conventions, its side effects, etc.
563
564The Python parser does not strip indentation from multi-line string literals in
565Python, so tools that process documentation have to strip indentation if
566desired. This is done using the following convention. The first non-blank line
567*after* the first line of the string determines the amount of indentation for
568the entire documentation string. (We can't use the first line since it is
569generally adjacent to the string's opening quotes so its indentation is not
570apparent in the string literal.) Whitespace "equivalent" to this indentation is
571then stripped from the start of all lines of the string. Lines that are
572indented less should not occur, but if they occur all their leading whitespace
573should be stripped. Equivalence of whitespace should be tested after expansion
574of tabs (to 8 spaces, normally).
575
576Here is an example of a multi-line docstring::
577
578 >>> def my_function():
579 ... """Do nothing, but document it.
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000580 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000581 ... No, really, it doesn't do anything.
582 ... """
583 ... pass
Georg Brandlc62ef8b2009-01-03 20:55:06 +0000584 ...
Georg Brandl8ec7f652007-08-15 14:28:01 +0000585 >>> print my_function.__doc__
586 Do nothing, but document it.
587
588 No, really, it doesn't do anything.
589
590
Georg Brandl35f88612008-01-06 22:05:40 +0000591.. _tut-codingstyle:
592
593Intermezzo: Coding Style
594========================
595
596.. sectionauthor:: Georg Brandl <georg@python.org>
597.. index:: pair: coding; style
598
599Now that you are about to write longer, more complex pieces of Python, it is a
600good time to talk about *coding style*. Most languages can be written (or more
601concise, *formatted*) in different styles; some are more readable than others.
602Making it easy for others to read your code is always a good idea, and adopting
603a nice coding style helps tremendously for that.
604
Andrew M. Kuchling8c65b1e2008-04-15 13:10:41 +0000605For Python, :pep:`8` has emerged as the style guide that most projects adhere to;
Georg Brandl35f88612008-01-06 22:05:40 +0000606it promotes a very readable and eye-pleasing coding style. Every Python
607developer should read it at some point; here are the most important points
608extracted for you:
609
610* Use 4-space indentation, and no tabs.
611
612 4 spaces are a good compromise between small indentation (allows greater
613 nesting depth) and large indentation (easier to read). Tabs introduce
614 confusion, and are best left out.
615
616* Wrap lines so that they don't exceed 79 characters.
617
618 This helps users with small displays and makes it possible to have several
619 code files side-by-side on larger displays.
620
621* Use blank lines to separate functions and classes, and larger blocks of
622 code inside functions.
623
624* When possible, put comments on a line of their own.
625
626* Use docstrings.
627
628* Use spaces around operators and after commas, but not directly inside
629 bracketing constructs: ``a = f(1, 2) + g(3, 4)``.
630
631* Name your classes and functions consistently; the convention is to use
632 ``CamelCase`` for classes and ``lower_case_with_underscores`` for functions
Georg Brandl3ce0dee2008-09-13 17:18:11 +0000633 and methods. Always use ``self`` as the name for the first method argument
634 (see :ref:`tut-firstclasses` for more on classes and methods).
Georg Brandl35f88612008-01-06 22:05:40 +0000635
636* Don't use fancy encodings if your code is meant to be used in international
637 environments. Plain ASCII works best in any case.
638
Georg Brandl8ec7f652007-08-15 14:28:01 +0000639
640.. rubric:: Footnotes
641
Georg Brandl35f88612008-01-06 22:05:40 +0000642.. [#] Actually, *call by object reference* would be a better description,
643 since if a mutable object is passed, the caller will see any changes the
644 callee makes to it (items inserted into a list).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000645