blob: 3af288a17b270d93fc27421e7ec3d990288bd81a [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001.. _tut-morecontrol:
2
3***********************
4More Control Flow Tools
5***********************
6
Diego Alberto Barriga Martínezb5748132019-09-17 11:57:55 -05007Besides the :keyword:`while` statement just introduced, Python uses the usual
8flow control statements known from other languages, with some twists.
Georg Brandl116aa622007-08-15 14:28:22 +00009
10
11.. _tut-if:
12
Serhiy Storchaka2b57c432018-12-19 08:09:46 +020013:keyword:`!if` Statements
14=========================
Georg Brandl116aa622007-08-15 14:28:22 +000015
16Perhaps the most well-known statement type is the :keyword:`if` statement. For
17example::
18
Georg Brandle9af2842007-08-17 05:54:09 +000019 >>> x = int(input("Please enter an integer: "))
Georg Brandl5d955ed2008-09-13 17:18:21 +000020 Please enter an integer: 42
Georg Brandl116aa622007-08-15 14:28:22 +000021 >>> if x < 0:
Ezio Melottie65cb192013-11-17 22:07:48 +020022 ... x = 0
23 ... print('Negative changed to zero')
Georg Brandl116aa622007-08-15 14:28:22 +000024 ... elif x == 0:
Ezio Melottie65cb192013-11-17 22:07:48 +020025 ... print('Zero')
Georg Brandl116aa622007-08-15 14:28:22 +000026 ... elif x == 1:
Ezio Melottie65cb192013-11-17 22:07:48 +020027 ... print('Single')
Georg Brandl116aa622007-08-15 14:28:22 +000028 ... else:
Ezio Melottie65cb192013-11-17 22:07:48 +020029 ... print('More')
Georg Brandl5d955ed2008-09-13 17:18:21 +000030 ...
31 More
Georg Brandl116aa622007-08-15 14:28:22 +000032
33There can be zero or more :keyword:`elif` parts, and the :keyword:`else` part is
Serhiy Storchaka2b57c432018-12-19 08:09:46 +020034optional. The keyword ':keyword:`!elif`' is short for 'else if', and is useful
35to avoid excessive indentation. An :keyword:`!if` ... :keyword:`!elif` ...
36:keyword:`!elif` ... sequence is a substitute for the ``switch`` or
Christian Heimes5b5e81c2007-12-31 16:14:33 +000037``case`` statements found in other languages.
Georg Brandl116aa622007-08-15 14:28:22 +000038
39
40.. _tut-for:
41
Serhiy Storchaka2b57c432018-12-19 08:09:46 +020042:keyword:`!for` Statements
43==========================
Georg Brandl116aa622007-08-15 14:28:22 +000044
45.. index::
46 statement: for
Georg Brandl116aa622007-08-15 14:28:22 +000047
48The :keyword:`for` statement in Python differs a bit from what you may be used
49to in C or Pascal. Rather than always iterating over an arithmetic progression
50of numbers (like in Pascal), or giving the user the ability to define both the
Serhiy Storchaka2b57c432018-12-19 08:09:46 +020051iteration step and halting condition (as C), Python's :keyword:`!for` statement
Georg Brandl116aa622007-08-15 14:28:22 +000052iterates over the items of any sequence (a list or a string), in the order that
53they appear in the sequence. For example (no pun intended):
54
Christian Heimes5b5e81c2007-12-31 16:14:33 +000055.. One suggestion was to give a real C example here, but that may only serve to
56 confuse non-C programmers.
Georg Brandl116aa622007-08-15 14:28:22 +000057
58::
59
60 >>> # Measure some strings:
Chris Jerdonek4fab8f02012-10-15 19:44:47 -070061 ... words = ['cat', 'window', 'defenestrate']
62 >>> for w in words:
63 ... print(w, len(w))
Georg Brandl48310cd2009-01-03 21:18:54 +000064 ...
Georg Brandl116aa622007-08-15 14:28:22 +000065 cat 3
66 window 6
67 defenestrate 12
68
Raymond Hettinger6fcb6cf2019-08-22 23:44:19 -070069Code that modifies a collection while iterating over that same collection can
70be tricky to get right. Instead, it is usually more straight-forward to loop
71over a copy of the collection or to create a new collection::
Georg Brandl116aa622007-08-15 14:28:22 +000072
Raymond Hettinger6fcb6cf2019-08-22 23:44:19 -070073 # Strategy: Iterate over a copy
74 for user, status in users.copy().items():
75 if status == 'inactive':
76 del users[user]
Georg Brandl116aa622007-08-15 14:28:22 +000077
Raymond Hettinger6fcb6cf2019-08-22 23:44:19 -070078 # Strategy: Create a new collection
79 active_users = {}
80 for user, status in users.items():
81 if status == 'active':
82 active_users[user] = status
Georg Brandl40383c82016-02-15 17:50:33 +010083
Georg Brandl116aa622007-08-15 14:28:22 +000084
85.. _tut-range:
86
87The :func:`range` Function
88==========================
89
90If you do need to iterate over a sequence of numbers, the built-in function
Guido van Rossum0616b792007-08-31 03:25:11 +000091:func:`range` comes in handy. It generates arithmetic progressions::
Georg Brandl116aa622007-08-15 14:28:22 +000092
Guido van Rossum0616b792007-08-31 03:25:11 +000093 >>> for i in range(5):
94 ... print(i)
95 ...
96 0
97 1
98 2
99 3
100 4
Georg Brandl48310cd2009-01-03 21:18:54 +0000101
Georg Brandl7d821062010-06-27 10:59:19 +0000102The given end point is never part of the generated sequence; ``range(10)`` generates
Guido van Rossum0616b792007-08-31 03:25:11 +000010310 values, the legal indices for items of a sequence of length 10. It
Georg Brandl116aa622007-08-15 14:28:22 +0000104is possible to let the range start at another number, or to specify a different
105increment (even negative; sometimes this is called the 'step')::
106
Georg Brandl48310cd2009-01-03 21:18:54 +0000107 range(5, 10)
Steven M. Vascellaro83d70622018-03-09 14:57:21 -0500108 5, 6, 7, 8, 9
Guido van Rossum0616b792007-08-31 03:25:11 +0000109
Georg Brandl48310cd2009-01-03 21:18:54 +0000110 range(0, 10, 3)
Guido van Rossum0616b792007-08-31 03:25:11 +0000111 0, 3, 6, 9
112
Georg Brandl48310cd2009-01-03 21:18:54 +0000113 range(-10, -100, -30)
Guido van Rossum0616b792007-08-31 03:25:11 +0000114 -10, -40, -70
Georg Brandl116aa622007-08-15 14:28:22 +0000115
Georg Brandlaf265f42008-12-07 15:06:20 +0000116To iterate over the indices of a sequence, you can combine :func:`range` and
117:func:`len` as follows::
Georg Brandl116aa622007-08-15 14:28:22 +0000118
119 >>> a = ['Mary', 'had', 'a', 'little', 'lamb']
120 >>> for i in range(len(a)):
Guido van Rossum0616b792007-08-31 03:25:11 +0000121 ... print(i, a[i])
Georg Brandl48310cd2009-01-03 21:18:54 +0000122 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000123 0 Mary
124 1 had
125 2 a
126 3 little
127 4 lamb
128
Georg Brandlaf265f42008-12-07 15:06:20 +0000129In most such cases, however, it is convenient to use the :func:`enumerate`
130function, see :ref:`tut-loopidioms`.
131
Guido van Rossum0616b792007-08-31 03:25:11 +0000132A strange thing happens if you just print a range::
133
134 >>> print(range(10))
135 range(0, 10)
136
137In many ways the object returned by :func:`range` behaves as if it is a list,
Georg Brandl48310cd2009-01-03 21:18:54 +0000138but in fact it isn't. It is an object which returns the successive items of
139the desired sequence when you iterate over it, but it doesn't really make
140the list, thus saving space.
Guido van Rossum0616b792007-08-31 03:25:11 +0000141
Marco Buttu218e47b2019-06-01 23:11:48 +0200142We say such an object is :term:`iterable`, that is, suitable as a target for
Georg Brandl48310cd2009-01-03 21:18:54 +0000143functions and constructs that expect something from which they can
Marco Buttu218e47b2019-06-01 23:11:48 +0200144obtain successive items until the supply is exhausted. We have seen that
Don Kirkby3ed4d252020-02-09 16:57:46 -0800145the :keyword:`for` statement is such a construct, while an example of a function
Marco Buttu218e47b2019-06-01 23:11:48 +0200146that takes an iterable is :func:`sum`::
Guido van Rossum0616b792007-08-31 03:25:11 +0000147
Marco Buttu218e47b2019-06-01 23:11:48 +0200148 >>> sum(range(4)) # 0 + 1 + 2 + 3
149 6
Guido van Rossum0616b792007-08-31 03:25:11 +0000150
Marco Buttu218e47b2019-06-01 23:11:48 +0200151Later we will see more functions that return iterables and take iterables as
152arguments. Lastly, maybe you are curious about how to get a list from a range.
153Here is the solution::
Guido van Rossum0616b792007-08-31 03:25:11 +0000154
Marco Buttu218e47b2019-06-01 23:11:48 +0200155 >>> list(range(4))
156 [0, 1, 2, 3]
Georg Brandl116aa622007-08-15 14:28:22 +0000157
Marco Buttu218e47b2019-06-01 23:11:48 +0200158In chapter :ref:`tut-structures`, we will discuss in more detail about
159:func:`list`.
Georg Brandlaf265f42008-12-07 15:06:20 +0000160
Georg Brandl116aa622007-08-15 14:28:22 +0000161.. _tut-break:
162
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200163:keyword:`!break` and :keyword:`!continue` Statements, and :keyword:`!else` Clauses on Loops
164============================================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000165
regexaurus36fc8962017-06-27 18:40:41 -0400166The :keyword:`break` statement, like in C, breaks out of the innermost enclosing
Georg Brandl116aa622007-08-15 14:28:22 +0000167:keyword:`for` or :keyword:`while` loop.
168
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200169Loop statements may have an :keyword:`!else` clause; it is executed when the loop
Marco Buttu218e47b2019-06-01 23:11:48 +0200170terminates through exhaustion of the iterable (with :keyword:`for`) or when the
Georg Brandl116aa622007-08-15 14:28:22 +0000171condition becomes false (with :keyword:`while`), but not when the loop is
172terminated by a :keyword:`break` statement. This is exemplified by the
173following loop, which searches for prime numbers::
174
175 >>> for n in range(2, 10):
176 ... for x in range(2, n):
177 ... if n % x == 0:
Georg Brandlb03c1d92008-05-01 18:06:50 +0000178 ... print(n, 'equals', x, '*', n//x)
Georg Brandl116aa622007-08-15 14:28:22 +0000179 ... break
180 ... else:
181 ... # loop fell through without finding a factor
Guido van Rossum0616b792007-08-31 03:25:11 +0000182 ... print(n, 'is a prime number')
Georg Brandl48310cd2009-01-03 21:18:54 +0000183 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000184 2 is a prime number
185 3 is a prime number
186 4 equals 2 * 2
187 5 is a prime number
188 6 equals 2 * 3
189 7 is a prime number
190 8 equals 2 * 4
191 9 equals 3 * 3
192
Georg Brandlbdbdfb12011-08-08 21:45:13 +0200193(Yes, this is the correct code. Look closely: the ``else`` clause belongs to
194the :keyword:`for` loop, **not** the :keyword:`if` statement.)
195
Nick Coghlana3a164a2012-06-07 22:41:34 +1000196When used with a loop, the ``else`` clause has more in common with the
Marco Buttu218e47b2019-06-01 23:11:48 +0200197``else`` clause of a :keyword:`try` statement than it does with that of
198:keyword:`if` statements: a :keyword:`try` statement's ``else`` clause runs
Nick Coghlana3a164a2012-06-07 22:41:34 +1000199when no exception occurs, and a loop's ``else`` clause runs when no ``break``
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200200occurs. For more on the :keyword:`!try` statement and exceptions, see
Nick Coghlana3a164a2012-06-07 22:41:34 +1000201:ref:`tut-handling`.
202
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700203The :keyword:`continue` statement, also borrowed from C, continues with the next
204iteration of the loop::
205
206 >>> for num in range(2, 10):
Eli Bendersky31a11902012-08-18 09:50:09 +0300207 ... if num % 2 == 0:
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700208 ... print("Found an even number", num)
209 ... continue
Miss Islington (bot)0cc037f2020-09-15 06:56:28 -0700210 ... print("Found an odd number", num)
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700211 Found an even number 2
Miss Islington (bot)0cc037f2020-09-15 06:56:28 -0700212 Found an odd number 3
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700213 Found an even number 4
Miss Islington (bot)0cc037f2020-09-15 06:56:28 -0700214 Found an odd number 5
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700215 Found an even number 6
Miss Islington (bot)0cc037f2020-09-15 06:56:28 -0700216 Found an odd number 7
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700217 Found an even number 8
Miss Islington (bot)0cc037f2020-09-15 06:56:28 -0700218 Found an odd number 9
Georg Brandl116aa622007-08-15 14:28:22 +0000219
220.. _tut-pass:
221
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200222:keyword:`!pass` Statements
223===========================
Georg Brandl116aa622007-08-15 14:28:22 +0000224
225The :keyword:`pass` statement does nothing. It can be used when a statement is
226required syntactically but the program requires no action. For example::
227
228 >>> while True:
Georg Brandl5d955ed2008-09-13 17:18:21 +0000229 ... pass # Busy-wait for keyboard interrupt (Ctrl+C)
Georg Brandl48310cd2009-01-03 21:18:54 +0000230 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000231
Benjamin Peterson92035012008-12-27 16:00:54 +0000232This is commonly used for creating minimal classes::
Georg Brandla971c652008-11-07 09:39:56 +0000233
Benjamin Peterson92035012008-12-27 16:00:54 +0000234 >>> class MyEmptyClass:
Georg Brandla971c652008-11-07 09:39:56 +0000235 ... pass
Benjamin Peterson92035012008-12-27 16:00:54 +0000236 ...
Georg Brandla971c652008-11-07 09:39:56 +0000237
238Another place :keyword:`pass` can be used is as a place-holder for a function or
Benjamin Peterson92035012008-12-27 16:00:54 +0000239conditional body when you are working on new code, allowing you to keep thinking
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200240at a more abstract level. The :keyword:`!pass` is silently ignored::
Georg Brandla971c652008-11-07 09:39:56 +0000241
242 >>> def initlog(*args):
Benjamin Peterson92035012008-12-27 16:00:54 +0000243 ... pass # Remember to implement this!
Georg Brandl48310cd2009-01-03 21:18:54 +0000244 ...
Georg Brandla971c652008-11-07 09:39:56 +0000245
Georg Brandl116aa622007-08-15 14:28:22 +0000246.. _tut-functions:
247
248Defining Functions
249==================
250
251We can create a function that writes the Fibonacci series to an arbitrary
252boundary::
253
254 >>> def fib(n): # write Fibonacci series up to n
255 ... """Print a Fibonacci series up to n."""
256 ... a, b = 0, 1
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000257 ... while a < n:
258 ... print(a, end=' ')
Georg Brandl116aa622007-08-15 14:28:22 +0000259 ... a, b = b, a+b
Guido van Rossum0616b792007-08-31 03:25:11 +0000260 ... print()
Georg Brandl48310cd2009-01-03 21:18:54 +0000261 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000262 >>> # Now call the function we just defined:
263 ... fib(2000)
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000264 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
Georg Brandl116aa622007-08-15 14:28:22 +0000265
266.. index::
267 single: documentation strings
268 single: docstrings
269 single: strings, documentation
270
271The keyword :keyword:`def` introduces a function *definition*. It must be
272followed by the function name and the parenthesized list of formal parameters.
273The statements that form the body of the function start at the next line, and
Georg Brandl5d955ed2008-09-13 17:18:21 +0000274must be indented.
Georg Brandl116aa622007-08-15 14:28:22 +0000275
Georg Brandl5d955ed2008-09-13 17:18:21 +0000276The first statement of the function body can optionally be a string literal;
277this string literal is the function's documentation string, or :dfn:`docstring`.
278(More about docstrings can be found in the section :ref:`tut-docstrings`.)
Georg Brandl116aa622007-08-15 14:28:22 +0000279There are tools which use docstrings to automatically produce online or printed
280documentation, or to let the user interactively browse through code; it's good
Georg Brandl5d955ed2008-09-13 17:18:21 +0000281practice to include docstrings in code that you write, so make a habit of it.
Georg Brandl116aa622007-08-15 14:28:22 +0000282
283The *execution* of a function introduces a new symbol table used for the local
284variables of the function. More precisely, all variable assignments in a
285function store the value in the local symbol table; whereas variable references
Georg Brandl86def6c2008-01-21 20:36:10 +0000286first look in the local symbol table, then in the local symbol tables of
287enclosing functions, then in the global symbol table, and finally in the table
pbhde1f95e72019-05-29 05:38:03 +0200288of built-in names. Thus, global variables and variables of enclosing functions
289cannot be directly assigned a value within a function (unless, for global
290variables, named in a :keyword:`global` statement, or, for variables of enclosing
291functions, named in a :keyword:`nonlocal` statement), although they may be
292referenced.
Georg Brandl116aa622007-08-15 14:28:22 +0000293
294The actual parameters (arguments) to a function call are introduced in the local
295symbol table of the called function when it is called; thus, arguments are
296passed using *call by value* (where the *value* is always an object *reference*,
297not the value of the object). [#]_ When a function calls another function, a new
298local symbol table is created for that call.
299
Miss Islington (bot)00c09f02020-07-05 19:07:32 -0700300A function definition associates the function name with the function object in
301the current symbol table. The interpreter recognizes the object pointed to by
302that name as a user-defined function. Other names can also point to that same
303function object and can also be used to access the function::
Georg Brandl116aa622007-08-15 14:28:22 +0000304
305 >>> fib
306 <function fib at 10042ed0>
307 >>> f = fib
308 >>> f(100)
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000309 0 1 1 2 3 5 8 13 21 34 55 89
Georg Brandl116aa622007-08-15 14:28:22 +0000310
Georg Brandl5d955ed2008-09-13 17:18:21 +0000311Coming from other languages, you might object that ``fib`` is not a function but
312a procedure since it doesn't return a value. In fact, even functions without a
313:keyword:`return` statement do return a value, albeit a rather boring one. This
314value is called ``None`` (it's a built-in name). Writing the value ``None`` is
315normally suppressed by the interpreter if it would be the only value written.
316You can see it if you really want to using :func:`print`::
Georg Brandl116aa622007-08-15 14:28:22 +0000317
Georg Brandl9afde1c2007-11-01 20:32:30 +0000318 >>> fib(0)
Guido van Rossum0616b792007-08-31 03:25:11 +0000319 >>> print(fib(0))
Georg Brandl116aa622007-08-15 14:28:22 +0000320 None
321
322It is simple to write a function that returns a list of the numbers of the
323Fibonacci series, instead of printing it::
324
Serhiy Storchakadba90392016-05-10 12:01:23 +0300325 >>> def fib2(n): # return Fibonacci series up to n
Georg Brandl116aa622007-08-15 14:28:22 +0000326 ... """Return a list containing the Fibonacci series up to n."""
327 ... result = []
328 ... a, b = 0, 1
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000329 ... while a < n:
330 ... result.append(a) # see below
Georg Brandl116aa622007-08-15 14:28:22 +0000331 ... a, b = b, a+b
332 ... return result
Georg Brandl48310cd2009-01-03 21:18:54 +0000333 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000334 >>> f100 = fib2(100) # call it
335 >>> f100 # write the result
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000336 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Georg Brandl116aa622007-08-15 14:28:22 +0000337
338This example, as usual, demonstrates some new Python features:
339
340* The :keyword:`return` statement returns with a value from a function.
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200341 :keyword:`!return` without an expression argument returns ``None``. Falling off
Georg Brandl5d955ed2008-09-13 17:18:21 +0000342 the end of a function also returns ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000343
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000344* The statement ``result.append(a)`` calls a *method* of the list object
Georg Brandl116aa622007-08-15 14:28:22 +0000345 ``result``. A method is a function that 'belongs' to an object and is named
346 ``obj.methodname``, where ``obj`` is some object (this may be an expression),
347 and ``methodname`` is the name of a method that is defined by the object's type.
348 Different types define different methods. Methods of different types may have
349 the same name without causing ambiguity. (It is possible to define your own
Georg Brandlc6c31782009-06-08 13:41:29 +0000350 object types and methods, using *classes*, see :ref:`tut-classes`)
Georg Brandl116aa622007-08-15 14:28:22 +0000351 The method :meth:`append` shown in the example is defined for list objects; it
352 adds a new element at the end of the list. In this example it is equivalent to
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000353 ``result = result + [a]``, but more efficient.
Georg Brandl116aa622007-08-15 14:28:22 +0000354
355
356.. _tut-defining:
357
358More on Defining Functions
359==========================
360
361It is also possible to define functions with a variable number of arguments.
362There are three forms, which can be combined.
363
364
365.. _tut-defaultargs:
366
367Default Argument Values
368-----------------------
369
370The most useful form is to specify a default value for one or more arguments.
371This creates a function that can be called with fewer arguments than it is
372defined to allow. For example::
373
Berker Peksag0a5120e2016-06-02 11:31:19 -0700374 def ask_ok(prompt, retries=4, reminder='Please try again!'):
Georg Brandl116aa622007-08-15 14:28:22 +0000375 while True:
Georg Brandle9af2842007-08-17 05:54:09 +0000376 ok = input(prompt)
Georg Brandlc6c31782009-06-08 13:41:29 +0000377 if ok in ('y', 'ye', 'yes'):
378 return True
379 if ok in ('n', 'no', 'nop', 'nope'):
380 return False
Georg Brandl116aa622007-08-15 14:28:22 +0000381 retries = retries - 1
Collin Winter58721bc2007-09-10 00:39:52 +0000382 if retries < 0:
Berker Peksag0a5120e2016-06-02 11:31:19 -0700383 raise ValueError('invalid user response')
384 print(reminder)
Georg Brandl116aa622007-08-15 14:28:22 +0000385
Georg Brandlc6c31782009-06-08 13:41:29 +0000386This function can be called in several ways:
387
388* giving only the mandatory argument:
389 ``ask_ok('Do you really want to quit?')``
390* giving one of the optional arguments:
391 ``ask_ok('OK to overwrite the file?', 2)``
392* or even giving all arguments:
393 ``ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')``
Georg Brandl116aa622007-08-15 14:28:22 +0000394
395This example also introduces the :keyword:`in` keyword. This tests whether or
396not a sequence contains a certain value.
397
398The default values are evaluated at the point of function definition in the
399*defining* scope, so that ::
400
401 i = 5
402
403 def f(arg=i):
Guido van Rossum0616b792007-08-31 03:25:11 +0000404 print(arg)
Georg Brandl116aa622007-08-15 14:28:22 +0000405
406 i = 6
407 f()
408
409will print ``5``.
410
411**Important warning:** The default value is evaluated only once. This makes a
412difference when the default is a mutable object such as a list, dictionary, or
413instances of most classes. For example, the following function accumulates the
414arguments passed to it on subsequent calls::
415
416 def f(a, L=[]):
417 L.append(a)
418 return L
419
Guido van Rossum0616b792007-08-31 03:25:11 +0000420 print(f(1))
421 print(f(2))
422 print(f(3))
Georg Brandl116aa622007-08-15 14:28:22 +0000423
424This will print ::
425
426 [1]
427 [1, 2]
428 [1, 2, 3]
429
430If you don't want the default to be shared between subsequent calls, you can
431write the function like this instead::
432
433 def f(a, L=None):
434 if L is None:
435 L = []
436 L.append(a)
437 return L
438
439
440.. _tut-keywordargs:
441
442Keyword Arguments
443-----------------
444
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200445Functions can also be called using :term:`keyword arguments <keyword argument>`
446of the form ``kwarg=value``. For instance, the following function::
Georg Brandl116aa622007-08-15 14:28:22 +0000447
448 def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
Georg Brandle4ac7502007-09-03 07:10:24 +0000449 print("-- This parrot wouldn't", action, end=' ')
Guido van Rossum0616b792007-08-31 03:25:11 +0000450 print("if you put", voltage, "volts through it.")
451 print("-- Lovely plumage, the", type)
452 print("-- It's", state, "!")
Georg Brandl116aa622007-08-15 14:28:22 +0000453
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200454accepts one required argument (``voltage``) and three optional arguments
455(``state``, ``action``, and ``type``). This function can be called in any
456of the following ways::
Georg Brandl116aa622007-08-15 14:28:22 +0000457
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200458 parrot(1000) # 1 positional argument
459 parrot(voltage=1000) # 1 keyword argument
460 parrot(voltage=1000000, action='VOOOOOM') # 2 keyword arguments
461 parrot(action='VOOOOOM', voltage=1000000) # 2 keyword arguments
462 parrot('a million', 'bereft of life', 'jump') # 3 positional arguments
463 parrot('a thousand', state='pushing up the daisies') # 1 positional, 1 keyword
Georg Brandl116aa622007-08-15 14:28:22 +0000464
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200465but all the following calls would be invalid::
Georg Brandl116aa622007-08-15 14:28:22 +0000466
467 parrot() # required argument missing
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200468 parrot(voltage=5.0, 'dead') # non-keyword argument after a keyword argument
469 parrot(110, voltage=220) # duplicate value for the same argument
470 parrot(actor='John Cleese') # unknown keyword argument
Georg Brandl116aa622007-08-15 14:28:22 +0000471
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200472In a function call, keyword arguments must follow positional arguments.
473All the keyword arguments passed must match one of the arguments
474accepted by the function (e.g. ``actor`` is not a valid argument for the
475``parrot`` function), and their order is not important. This also includes
476non-optional arguments (e.g. ``parrot(voltage=1000)`` is valid too).
477No argument may receive a value more than once.
478Here's an example that fails due to this restriction::
Georg Brandl116aa622007-08-15 14:28:22 +0000479
480 >>> def function(a):
481 ... pass
Georg Brandl48310cd2009-01-03 21:18:54 +0000482 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000483 >>> function(0, a=0)
484 Traceback (most recent call last):
UltimateCoder88569402017-05-03 22:16:45 +0530485 File "<stdin>", line 1, in <module>
Georg Brandl116aa622007-08-15 14:28:22 +0000486 TypeError: function() got multiple values for keyword argument 'a'
487
488When a final formal parameter of the form ``**name`` is present, it receives a
489dictionary (see :ref:`typesmapping`) containing all keyword arguments except for
490those corresponding to a formal parameter. This may be combined with a formal
491parameter of the form ``*name`` (described in the next subsection) which
Julien Palard51ddab82019-05-28 15:10:23 +0200492receives a :ref:`tuple <tut-tuples>` containing the positional
493arguments beyond the formal parameter list. (``*name`` must occur
494before ``**name``.) For example, if we define a function like this::
Georg Brandl116aa622007-08-15 14:28:22 +0000495
496 def cheeseshop(kind, *arguments, **keywords):
Georg Brandl5d955ed2008-09-13 17:18:21 +0000497 print("-- Do you have any", kind, "?")
Guido van Rossum0616b792007-08-31 03:25:11 +0000498 print("-- I'm sorry, we're all out of", kind)
Georg Brandl70543ac2010-10-15 15:32:05 +0000499 for arg in arguments:
500 print(arg)
Georg Brandl5d955ed2008-09-13 17:18:21 +0000501 print("-" * 40)
Jim Fasarakis-Hilliard32e8f9b2017-02-21 08:20:23 +0200502 for kw in keywords:
Georg Brandl70543ac2010-10-15 15:32:05 +0000503 print(kw, ":", keywords[kw])
Georg Brandl116aa622007-08-15 14:28:22 +0000504
505It could be called like this::
506
Georg Brandl5d955ed2008-09-13 17:18:21 +0000507 cheeseshop("Limburger", "It's very runny, sir.",
Georg Brandl116aa622007-08-15 14:28:22 +0000508 "It's really very, VERY runny, sir.",
Georg Brandl5d955ed2008-09-13 17:18:21 +0000509 shopkeeper="Michael Palin",
510 client="John Cleese",
511 sketch="Cheese Shop Sketch")
Georg Brandl116aa622007-08-15 14:28:22 +0000512
Martin Panter1050d2d2016-07-26 11:18:21 +0200513and of course it would print:
514
515.. code-block:: none
Georg Brandl116aa622007-08-15 14:28:22 +0000516
517 -- Do you have any Limburger ?
518 -- I'm sorry, we're all out of Limburger
519 It's very runny, sir.
520 It's really very, VERY runny, sir.
521 ----------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000522 shopkeeper : Michael Palin
Jim Fasarakis-Hilliard32e8f9b2017-02-21 08:20:23 +0200523 client : John Cleese
Georg Brandl116aa622007-08-15 14:28:22 +0000524 sketch : Cheese Shop Sketch
525
Jim Fasarakis-Hilliard32e8f9b2017-02-21 08:20:23 +0200526Note that the order in which the keyword arguments are printed is guaranteed
527to match the order in which they were provided in the function call.
528
Pablo Galindob76302d2019-05-29 00:45:32 +0100529Special parameters
530------------------
531
532By default, arguments may be passed to a Python function either by position
533or explicitly by keyword. For readability and performance, it makes sense to
534restrict the way arguments can be passed so that a developer need only look
535at the function definition to determine if items are passed by position, by
536position or keyword, or by keyword.
537
538A function definition may look like:
539
540.. code-block:: none
541
542 def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
543 ----------- ---------- ----------
544 | | |
545 | Positional or keyword |
546 | - Keyword only
547 -- Positional only
548
549where ``/`` and ``*`` are optional. If used, these symbols indicate the kind of
550parameter by how the arguments may be passed to the function:
551positional-only, positional-or-keyword, and keyword-only. Keyword parameters
552are also referred to as named parameters.
553
554-------------------------------
555Positional-or-Keyword Arguments
556-------------------------------
557
558If ``/`` and ``*`` are not present in the function definition, arguments may
559be passed to a function by position or by keyword.
560
561--------------------------
562Positional-Only Parameters
563--------------------------
564
565Looking at this in a bit more detail, it is possible to mark certain parameters
566as *positional-only*. If *positional-only*, the parameters' order matters, and
567the parameters cannot be passed by keyword. Positional-only parameters are
568placed before a ``/`` (forward-slash). The ``/`` is used to logically
569separate the positional-only parameters from the rest of the parameters.
570If there is no ``/`` in the function definition, there are no positional-only
571parameters.
572
573Parameters following the ``/`` may be *positional-or-keyword* or *keyword-only*.
574
575----------------------
576Keyword-Only Arguments
577----------------------
578
579To mark parameters as *keyword-only*, indicating the parameters must be passed
580by keyword argument, place an ``*`` in the arguments list just before the first
581*keyword-only* parameter.
582
583-----------------
584Function Examples
585-----------------
586
587Consider the following example function definitions paying close attention to the
588markers ``/`` and ``*``::
589
590 >>> def standard_arg(arg):
591 ... print(arg)
592 ...
593 >>> def pos_only_arg(arg, /):
594 ... print(arg)
595 ...
596 >>> def kwd_only_arg(*, arg):
597 ... print(arg)
598 ...
599 >>> def combined_example(pos_only, /, standard, *, kwd_only):
600 ... print(pos_only, standard, kwd_only)
601
602
603The first function definition, ``standard_arg``, the most familiar form,
604places no restrictions on the calling convention and arguments may be
605passed by position or keyword::
606
607 >>> standard_arg(2)
608 2
609
610 >>> standard_arg(arg=2)
611 2
612
613The second function ``pos_only_arg`` is restricted to only use positional
614parameters as there is a ``/`` in the function definition::
615
616 >>> pos_only_arg(1)
617 1
618
619 >>> pos_only_arg(arg=1)
620 Traceback (most recent call last):
621 File "<stdin>", line 1, in <module>
622 TypeError: pos_only_arg() got an unexpected keyword argument 'arg'
623
624The third function ``kwd_only_args`` only allows keyword arguments as indicated
625by a ``*`` in the function definition::
626
627 >>> kwd_only_arg(3)
628 Traceback (most recent call last):
629 File "<stdin>", line 1, in <module>
630 TypeError: kwd_only_arg() takes 0 positional arguments but 1 was given
631
632 >>> kwd_only_arg(arg=3)
633 3
634
635And the last uses all three calling conventions in the same function
636definition::
637
638 >>> combined_example(1, 2, 3)
639 Traceback (most recent call last):
640 File "<stdin>", line 1, in <module>
641 TypeError: combined_example() takes 2 positional arguments but 3 were given
642
643 >>> combined_example(1, 2, kwd_only=3)
644 1 2 3
645
646 >>> combined_example(1, standard=2, kwd_only=3)
647 1 2 3
648
649 >>> combined_example(pos_only=1, standard=2, kwd_only=3)
650 Traceback (most recent call last):
651 File "<stdin>", line 1, in <module>
652 TypeError: combined_example() got an unexpected keyword argument 'pos_only'
653
654
655Finally, consider this function definition which has a potential collision between the positional argument ``name`` and ``**kwds`` which has ``name`` as a key::
656
657 def foo(name, **kwds):
658 return 'name' in kwds
659
660There is no possible call that will make it return ``True`` as the keyword ``'name'``
Miss Islington (bot)72d5ddb2020-08-22 02:08:02 -0700661will always bind to the first parameter. For example::
Pablo Galindob76302d2019-05-29 00:45:32 +0100662
663 >>> foo(1, **{'name': 2})
664 Traceback (most recent call last):
665 File "<stdin>", line 1, in <module>
666 TypeError: foo() got multiple values for argument 'name'
667 >>>
668
669But using ``/`` (positional only arguments), it is possible since it allows ``name`` as a positional argument and ``'name'`` as a key in the keyword arguments::
670
671 def foo(name, /, **kwds):
672 return 'name' in kwds
673 >>> foo(1, **{'name': 2})
674 True
675
676In other words, the names of positional-only parameters can be used in
677``**kwds`` without ambiguity.
678
679-----
680Recap
681-----
682
683The use case will determine which parameters to use in the function definition::
684
685 def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
686
687As guidance:
688
689* Use positional-only if you want the name of the parameters to not be
690 available to the user. This is useful when parameter names have no real
691 meaning, if you want to enforce the order of the arguments when the function
692 is called or if you need to take some positional parameters and arbitrary
693 keywords.
694* Use keyword-only when names have meaning and the function definition is
695 more understandable by being explicit with names or you want to prevent
696 users relying on the position of the argument being passed.
Adorilson Bezerrab7af4e72019-09-16 04:04:58 -0300697* For an API, use positional-only to prevent breaking API changes
Pablo Galindob76302d2019-05-29 00:45:32 +0100698 if the parameter's name is modified in the future.
Georg Brandl116aa622007-08-15 14:28:22 +0000699
700.. _tut-arbitraryargs:
701
702Arbitrary Argument Lists
703------------------------
704
Christian Heimesdae2a892008-04-19 00:55:37 +0000705.. index::
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200706 single: * (asterisk); in function calls
Christian Heimesdae2a892008-04-19 00:55:37 +0000707
Georg Brandl116aa622007-08-15 14:28:22 +0000708Finally, the least frequently used option is to specify that a function can be
709called with an arbitrary number of arguments. These arguments will be wrapped
Georg Brandl5d955ed2008-09-13 17:18:21 +0000710up in a tuple (see :ref:`tut-tuples`). Before the variable number of arguments,
711zero or more normal arguments may occur. ::
Georg Brandl116aa622007-08-15 14:28:22 +0000712
Georg Brandlf08a9dd2008-06-10 16:57:31 +0000713 def write_multiple_items(file, separator, *args):
714 file.write(separator.join(args))
Georg Brandl116aa622007-08-15 14:28:22 +0000715
Georg Brandl48310cd2009-01-03 21:18:54 +0000716
Guido van Rossum0616b792007-08-31 03:25:11 +0000717Normally, these ``variadic`` arguments will be last in the list of formal
Georg Brandl48310cd2009-01-03 21:18:54 +0000718parameters, because they scoop up all remaining input arguments that are
Guido van Rossum0616b792007-08-31 03:25:11 +0000719passed to the function. Any formal parameters which occur after the ``*args``
Georg Brandl48310cd2009-01-03 21:18:54 +0000720parameter are 'keyword-only' arguments, meaning that they can only be used as
Georg Brandle4ac7502007-09-03 07:10:24 +0000721keywords rather than positional arguments. ::
Georg Brandl48310cd2009-01-03 21:18:54 +0000722
Guido van Rossum0616b792007-08-31 03:25:11 +0000723 >>> def concat(*args, sep="/"):
Serhiy Storchakadba90392016-05-10 12:01:23 +0300724 ... return sep.join(args)
Guido van Rossum0616b792007-08-31 03:25:11 +0000725 ...
726 >>> concat("earth", "mars", "venus")
727 'earth/mars/venus'
728 >>> concat("earth", "mars", "venus", sep=".")
729 'earth.mars.venus'
Georg Brandl116aa622007-08-15 14:28:22 +0000730
731.. _tut-unpacking-arguments:
732
733Unpacking Argument Lists
734------------------------
735
736The reverse situation occurs when the arguments are already in a list or tuple
737but need to be unpacked for a function call requiring separate positional
738arguments. For instance, the built-in :func:`range` function expects separate
739*start* and *stop* arguments. If they are not available separately, write the
Raymond Hettingerfb28fcc2019-03-27 21:03:02 -0700740function call with the ``*``\ -operator to unpack the arguments out of a list
Georg Brandl116aa622007-08-15 14:28:22 +0000741or tuple::
742
Guido van Rossum0616b792007-08-31 03:25:11 +0000743 >>> list(range(3, 6)) # normal call with separate arguments
Georg Brandl116aa622007-08-15 14:28:22 +0000744 [3, 4, 5]
745 >>> args = [3, 6]
Guido van Rossum0616b792007-08-31 03:25:11 +0000746 >>> list(range(*args)) # call with arguments unpacked from a list
Georg Brandl116aa622007-08-15 14:28:22 +0000747 [3, 4, 5]
748
Christian Heimesdae2a892008-04-19 00:55:37 +0000749.. index::
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300750 single: **; in function calls
Christian Heimesdae2a892008-04-19 00:55:37 +0000751
Serhiy Storchaka3f819ca2018-10-31 02:26:06 +0200752In the same fashion, dictionaries can deliver keyword arguments with the
Raymond Hettingerfb28fcc2019-03-27 21:03:02 -0700753``**``\ -operator::
Georg Brandl116aa622007-08-15 14:28:22 +0000754
755 >>> def parrot(voltage, state='a stiff', action='voom'):
Georg Brandle4ac7502007-09-03 07:10:24 +0000756 ... print("-- This parrot wouldn't", action, end=' ')
Guido van Rossum0616b792007-08-31 03:25:11 +0000757 ... print("if you put", voltage, "volts through it.", end=' ')
758 ... print("E's", state, "!")
Georg Brandl116aa622007-08-15 14:28:22 +0000759 ...
760 >>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
761 >>> parrot(**d)
762 -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
763
764
765.. _tut-lambda:
766
Georg Brandlde5aff12013-10-06 10:22:45 +0200767Lambda Expressions
768------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000769
Georg Brandlde5aff12013-10-06 10:22:45 +0200770Small anonymous functions can be created with the :keyword:`lambda` keyword.
771This function returns the sum of its two arguments: ``lambda a, b: a+b``.
Georg Brandl242e6a02013-10-06 10:28:39 +0200772Lambda functions can be used wherever function objects are required. They are
Georg Brandlde5aff12013-10-06 10:22:45 +0200773syntactically restricted to a single expression. Semantically, they are just
774syntactic sugar for a normal function definition. Like nested function
775definitions, lambda functions can reference variables from the containing
776scope::
Georg Brandl116aa622007-08-15 14:28:22 +0000777
778 >>> def make_incrementor(n):
779 ... return lambda x: x + n
780 ...
781 >>> f = make_incrementor(42)
782 >>> f(0)
783 42
784 >>> f(1)
785 43
786
Georg Brandlde5aff12013-10-06 10:22:45 +0200787The above example uses a lambda expression to return a function. Another use
788is to pass a small function as an argument::
789
790 >>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
791 >>> pairs.sort(key=lambda pair: pair[1])
792 >>> pairs
793 [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
794
Georg Brandl116aa622007-08-15 14:28:22 +0000795
796.. _tut-docstrings:
797
798Documentation Strings
799---------------------
800
801.. index::
802 single: docstrings
803 single: documentation strings
804 single: strings, documentation
805
Guido van Rossum0616b792007-08-31 03:25:11 +0000806Here are some conventions about the content and formatting of documentation
Georg Brandl48310cd2009-01-03 21:18:54 +0000807strings.
Georg Brandl116aa622007-08-15 14:28:22 +0000808
809The first line should always be a short, concise summary of the object's
810purpose. For brevity, it should not explicitly state the object's name or type,
811since these are available by other means (except if the name happens to be a
812verb describing a function's operation). This line should begin with a capital
813letter and end with a period.
814
815If there are more lines in the documentation string, the second line should be
816blank, visually separating the summary from the rest of the description. The
817following lines should be one or more paragraphs describing the object's calling
818conventions, its side effects, etc.
819
820The Python parser does not strip indentation from multi-line string literals in
821Python, so tools that process documentation have to strip indentation if
822desired. This is done using the following convention. The first non-blank line
823*after* the first line of the string determines the amount of indentation for
824the entire documentation string. (We can't use the first line since it is
825generally adjacent to the string's opening quotes so its indentation is not
826apparent in the string literal.) Whitespace "equivalent" to this indentation is
827then stripped from the start of all lines of the string. Lines that are
828indented less should not occur, but if they occur all their leading whitespace
829should be stripped. Equivalence of whitespace should be tested after expansion
830of tabs (to 8 spaces, normally).
831
832Here is an example of a multi-line docstring::
833
834 >>> def my_function():
835 ... """Do nothing, but document it.
Georg Brandl48310cd2009-01-03 21:18:54 +0000836 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000837 ... No, really, it doesn't do anything.
838 ... """
839 ... pass
Georg Brandl48310cd2009-01-03 21:18:54 +0000840 ...
Guido van Rossum0616b792007-08-31 03:25:11 +0000841 >>> print(my_function.__doc__)
Georg Brandl116aa622007-08-15 14:28:22 +0000842 Do nothing, but document it.
843
844 No, really, it doesn't do anything.
845
846
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200847.. _tut-annotations:
848
849Function Annotations
850--------------------
851
852.. sectionauthor:: Zachary Ware <zachary.ware@gmail.com>
853.. index::
854 pair: function; annotations
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300855 single: ->; function annotations
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200856 single: : (colon); function annotations
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200857
Zachary Waref3b990e2015-04-13 11:30:47 -0500858:ref:`Function annotations <function>` are completely optional metadata
Neeraj Badlani643ff712018-04-25 10:52:13 -0700859information about the types used by user-defined functions (see :pep:`3107` and
860:pep:`484` for more information).
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200861
Cheryl Sabellab7105c92018-12-24 00:09:09 -0500862:term:`Annotations <function annotation>` are stored in the :attr:`__annotations__`
863attribute of the function as a dictionary and have no effect on any other part of the
864function. Parameter annotations are defined by a colon after the parameter name, followed
865by an expression evaluating to the value of the annotation. Return annotations are
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200866defined by a literal ``->``, followed by an expression, between the parameter
867list and the colon denoting the end of the :keyword:`def` statement. The
868following example has a positional argument, a keyword argument, and the return
Zachary Waref3b990e2015-04-13 11:30:47 -0500869value annotated::
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200870
Zachary Waref3b990e2015-04-13 11:30:47 -0500871 >>> def f(ham: str, eggs: str = 'eggs') -> str:
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200872 ... print("Annotations:", f.__annotations__)
873 ... print("Arguments:", ham, eggs)
Zachary Waref3b990e2015-04-13 11:30:47 -0500874 ... return ham + ' and ' + eggs
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200875 ...
Zachary Waref3b990e2015-04-13 11:30:47 -0500876 >>> f('spam')
877 Annotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>}
878 Arguments: spam eggs
879 'spam and eggs'
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200880
Christian Heimes043d6f62008-01-07 17:19:16 +0000881.. _tut-codingstyle:
882
883Intermezzo: Coding Style
884========================
885
886.. sectionauthor:: Georg Brandl <georg@python.org>
887.. index:: pair: coding; style
888
889Now that you are about to write longer, more complex pieces of Python, it is a
890good time to talk about *coding style*. Most languages can be written (or more
891concise, *formatted*) in different styles; some are more readable than others.
892Making it easy for others to read your code is always a good idea, and adopting
893a nice coding style helps tremendously for that.
894
Christian Heimesdae2a892008-04-19 00:55:37 +0000895For Python, :pep:`8` has emerged as the style guide that most projects adhere to;
Christian Heimes043d6f62008-01-07 17:19:16 +0000896it promotes a very readable and eye-pleasing coding style. Every Python
897developer should read it at some point; here are the most important points
898extracted for you:
899
900* Use 4-space indentation, and no tabs.
901
902 4 spaces are a good compromise between small indentation (allows greater
903 nesting depth) and large indentation (easier to read). Tabs introduce
904 confusion, and are best left out.
905
906* Wrap lines so that they don't exceed 79 characters.
907
908 This helps users with small displays and makes it possible to have several
909 code files side-by-side on larger displays.
910
911* Use blank lines to separate functions and classes, and larger blocks of
912 code inside functions.
913
914* When possible, put comments on a line of their own.
915
916* Use docstrings.
917
918* Use spaces around operators and after commas, but not directly inside
919 bracketing constructs: ``a = f(1, 2) + g(3, 4)``.
920
921* Name your classes and functions consistently; the convention is to use
Julien Palard2da622f2019-07-08 23:06:32 +0200922 ``UpperCamelCase`` for classes and ``lowercase_with_underscores`` for functions
Georg Brandl5d955ed2008-09-13 17:18:21 +0000923 and methods. Always use ``self`` as the name for the first method argument
924 (see :ref:`tut-firstclasses` for more on classes and methods).
Christian Heimes043d6f62008-01-07 17:19:16 +0000925
926* Don't use fancy encodings if your code is meant to be used in international
Georg Brandl7ae90dd2009-06-08 18:59:09 +0000927 environments. Python's default, UTF-8, or even plain ASCII work best in any
928 case.
929
930* Likewise, don't use non-ASCII characters in identifiers if there is only the
931 slightest chance people speaking a different language will read or maintain
932 the code.
Christian Heimes043d6f62008-01-07 17:19:16 +0000933
Georg Brandl116aa622007-08-15 14:28:22 +0000934
935.. rubric:: Footnotes
936
Christian Heimes043d6f62008-01-07 17:19:16 +0000937.. [#] Actually, *call by object reference* would be a better description,
938 since if a mutable object is passed, the caller will see any changes the
939 callee makes to it (items inserted into a list).