blob: b8aec2b04f13fba854d49e3584401c6725dcfc2e [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
Antoine6fad3e62020-05-23 02:29:34 +020073 # Create a sample collection
74 users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
75
Raymond Hettinger6fcb6cf2019-08-22 23:44:19 -070076 # Strategy: Iterate over a copy
77 for user, status in users.copy().items():
78 if status == 'inactive':
79 del users[user]
Georg Brandl116aa622007-08-15 14:28:22 +000080
Raymond Hettinger6fcb6cf2019-08-22 23:44:19 -070081 # Strategy: Create a new collection
82 active_users = {}
83 for user, status in users.items():
84 if status == 'active':
85 active_users[user] = status
Georg Brandl40383c82016-02-15 17:50:33 +010086
Georg Brandl116aa622007-08-15 14:28:22 +000087
88.. _tut-range:
89
90The :func:`range` Function
91==========================
92
93If you do need to iterate over a sequence of numbers, the built-in function
Guido van Rossum0616b792007-08-31 03:25:11 +000094:func:`range` comes in handy. It generates arithmetic progressions::
Georg Brandl116aa622007-08-15 14:28:22 +000095
Guido van Rossum0616b792007-08-31 03:25:11 +000096 >>> for i in range(5):
97 ... print(i)
98 ...
99 0
100 1
101 2
102 3
103 4
Georg Brandl48310cd2009-01-03 21:18:54 +0000104
Georg Brandl7d821062010-06-27 10:59:19 +0000105The given end point is never part of the generated sequence; ``range(10)`` generates
Guido van Rossum0616b792007-08-31 03:25:11 +000010610 values, the legal indices for items of a sequence of length 10. It
Georg Brandl116aa622007-08-15 14:28:22 +0000107is possible to let the range start at another number, or to specify a different
108increment (even negative; sometimes this is called the 'step')::
109
Georg Brandl48310cd2009-01-03 21:18:54 +0000110 range(5, 10)
Steven M. Vascellaro83d70622018-03-09 14:57:21 -0500111 5, 6, 7, 8, 9
Guido van Rossum0616b792007-08-31 03:25:11 +0000112
Georg Brandl48310cd2009-01-03 21:18:54 +0000113 range(0, 10, 3)
Guido van Rossum0616b792007-08-31 03:25:11 +0000114 0, 3, 6, 9
115
Georg Brandl48310cd2009-01-03 21:18:54 +0000116 range(-10, -100, -30)
Guido van Rossum0616b792007-08-31 03:25:11 +0000117 -10, -40, -70
Georg Brandl116aa622007-08-15 14:28:22 +0000118
Georg Brandlaf265f42008-12-07 15:06:20 +0000119To iterate over the indices of a sequence, you can combine :func:`range` and
120:func:`len` as follows::
Georg Brandl116aa622007-08-15 14:28:22 +0000121
122 >>> a = ['Mary', 'had', 'a', 'little', 'lamb']
123 >>> for i in range(len(a)):
Guido van Rossum0616b792007-08-31 03:25:11 +0000124 ... print(i, a[i])
Georg Brandl48310cd2009-01-03 21:18:54 +0000125 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000126 0 Mary
127 1 had
128 2 a
129 3 little
130 4 lamb
131
Georg Brandlaf265f42008-12-07 15:06:20 +0000132In most such cases, however, it is convenient to use the :func:`enumerate`
133function, see :ref:`tut-loopidioms`.
134
Guido van Rossum0616b792007-08-31 03:25:11 +0000135A strange thing happens if you just print a range::
136
137 >>> print(range(10))
138 range(0, 10)
139
140In many ways the object returned by :func:`range` behaves as if it is a list,
Georg Brandl48310cd2009-01-03 21:18:54 +0000141but in fact it isn't. It is an object which returns the successive items of
142the desired sequence when you iterate over it, but it doesn't really make
143the list, thus saving space.
Guido van Rossum0616b792007-08-31 03:25:11 +0000144
Marco Buttu218e47b2019-06-01 23:11:48 +0200145We say such an object is :term:`iterable`, that is, suitable as a target for
Georg Brandl48310cd2009-01-03 21:18:54 +0000146functions and constructs that expect something from which they can
Marco Buttu218e47b2019-06-01 23:11:48 +0200147obtain successive items until the supply is exhausted. We have seen that
Don Kirkby3ed4d252020-02-09 16:57:46 -0800148the :keyword:`for` statement is such a construct, while an example of a function
Marco Buttu218e47b2019-06-01 23:11:48 +0200149that takes an iterable is :func:`sum`::
Guido van Rossum0616b792007-08-31 03:25:11 +0000150
Marco Buttu218e47b2019-06-01 23:11:48 +0200151 >>> sum(range(4)) # 0 + 1 + 2 + 3
152 6
Guido van Rossum0616b792007-08-31 03:25:11 +0000153
Marco Buttu218e47b2019-06-01 23:11:48 +0200154Later we will see more functions that return iterables and take iterables as
155arguments. Lastly, maybe you are curious about how to get a list from a range.
156Here is the solution::
Guido van Rossum0616b792007-08-31 03:25:11 +0000157
Marco Buttu218e47b2019-06-01 23:11:48 +0200158 >>> list(range(4))
159 [0, 1, 2, 3]
Georg Brandl116aa622007-08-15 14:28:22 +0000160
Marco Buttu218e47b2019-06-01 23:11:48 +0200161In chapter :ref:`tut-structures`, we will discuss in more detail about
162:func:`list`.
Georg Brandlaf265f42008-12-07 15:06:20 +0000163
Georg Brandl116aa622007-08-15 14:28:22 +0000164.. _tut-break:
165
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200166:keyword:`!break` and :keyword:`!continue` Statements, and :keyword:`!else` Clauses on Loops
167============================================================================================
Georg Brandl116aa622007-08-15 14:28:22 +0000168
regexaurus36fc8962017-06-27 18:40:41 -0400169The :keyword:`break` statement, like in C, breaks out of the innermost enclosing
Georg Brandl116aa622007-08-15 14:28:22 +0000170:keyword:`for` or :keyword:`while` loop.
171
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200172Loop statements may have an :keyword:`!else` clause; it is executed when the loop
Marco Buttu218e47b2019-06-01 23:11:48 +0200173terminates through exhaustion of the iterable (with :keyword:`for`) or when the
Georg Brandl116aa622007-08-15 14:28:22 +0000174condition becomes false (with :keyword:`while`), but not when the loop is
175terminated by a :keyword:`break` statement. This is exemplified by the
176following loop, which searches for prime numbers::
177
178 >>> for n in range(2, 10):
179 ... for x in range(2, n):
180 ... if n % x == 0:
Georg Brandlb03c1d92008-05-01 18:06:50 +0000181 ... print(n, 'equals', x, '*', n//x)
Georg Brandl116aa622007-08-15 14:28:22 +0000182 ... break
183 ... else:
184 ... # loop fell through without finding a factor
Guido van Rossum0616b792007-08-31 03:25:11 +0000185 ... print(n, 'is a prime number')
Georg Brandl48310cd2009-01-03 21:18:54 +0000186 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000187 2 is a prime number
188 3 is a prime number
189 4 equals 2 * 2
190 5 is a prime number
191 6 equals 2 * 3
192 7 is a prime number
193 8 equals 2 * 4
194 9 equals 3 * 3
195
Georg Brandlbdbdfb12011-08-08 21:45:13 +0200196(Yes, this is the correct code. Look closely: the ``else`` clause belongs to
197the :keyword:`for` loop, **not** the :keyword:`if` statement.)
198
Nick Coghlana3a164a2012-06-07 22:41:34 +1000199When used with a loop, the ``else`` clause has more in common with the
Marco Buttu218e47b2019-06-01 23:11:48 +0200200``else`` clause of a :keyword:`try` statement than it does with that of
201:keyword:`if` statements: a :keyword:`try` statement's ``else`` clause runs
Nick Coghlana3a164a2012-06-07 22:41:34 +1000202when no exception occurs, and a loop's ``else`` clause runs when no ``break``
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200203occurs. For more on the :keyword:`!try` statement and exceptions, see
Nick Coghlana3a164a2012-06-07 22:41:34 +1000204:ref:`tut-handling`.
205
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700206The :keyword:`continue` statement, also borrowed from C, continues with the next
207iteration of the loop::
208
209 >>> for num in range(2, 10):
Eli Bendersky31a11902012-08-18 09:50:09 +0300210 ... if num % 2 == 0:
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700211 ... print("Found an even number", num)
212 ... continue
Neeraj Samtani7bcc6452020-09-15 17:39:29 +0400213 ... print("Found an odd number", num)
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700214 Found an even number 2
Neeraj Samtani7bcc6452020-09-15 17:39:29 +0400215 Found an odd number 3
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700216 Found an even number 4
Neeraj Samtani7bcc6452020-09-15 17:39:29 +0400217 Found an odd number 5
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700218 Found an even number 6
Neeraj Samtani7bcc6452020-09-15 17:39:29 +0400219 Found an odd number 7
Senthil Kumaran1ef9caa2012-08-12 12:01:47 -0700220 Found an even number 8
Neeraj Samtani7bcc6452020-09-15 17:39:29 +0400221 Found an odd number 9
Georg Brandl116aa622007-08-15 14:28:22 +0000222
223.. _tut-pass:
224
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200225:keyword:`!pass` Statements
226===========================
Georg Brandl116aa622007-08-15 14:28:22 +0000227
228The :keyword:`pass` statement does nothing. It can be used when a statement is
229required syntactically but the program requires no action. For example::
230
231 >>> while True:
Georg Brandl5d955ed2008-09-13 17:18:21 +0000232 ... pass # Busy-wait for keyboard interrupt (Ctrl+C)
Georg Brandl48310cd2009-01-03 21:18:54 +0000233 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000234
Benjamin Peterson92035012008-12-27 16:00:54 +0000235This is commonly used for creating minimal classes::
Georg Brandla971c652008-11-07 09:39:56 +0000236
Benjamin Peterson92035012008-12-27 16:00:54 +0000237 >>> class MyEmptyClass:
Georg Brandla971c652008-11-07 09:39:56 +0000238 ... pass
Benjamin Peterson92035012008-12-27 16:00:54 +0000239 ...
Georg Brandla971c652008-11-07 09:39:56 +0000240
241Another place :keyword:`pass` can be used is as a place-holder for a function or
Benjamin Peterson92035012008-12-27 16:00:54 +0000242conditional body when you are working on new code, allowing you to keep thinking
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200243at a more abstract level. The :keyword:`!pass` is silently ignored::
Georg Brandla971c652008-11-07 09:39:56 +0000244
245 >>> def initlog(*args):
Benjamin Peterson92035012008-12-27 16:00:54 +0000246 ... pass # Remember to implement this!
Georg Brandl48310cd2009-01-03 21:18:54 +0000247 ...
Georg Brandla971c652008-11-07 09:39:56 +0000248
Georg Brandl116aa622007-08-15 14:28:22 +0000249.. _tut-functions:
250
251Defining Functions
252==================
253
254We can create a function that writes the Fibonacci series to an arbitrary
255boundary::
256
257 >>> def fib(n): # write Fibonacci series up to n
258 ... """Print a Fibonacci series up to n."""
259 ... a, b = 0, 1
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000260 ... while a < n:
261 ... print(a, end=' ')
Georg Brandl116aa622007-08-15 14:28:22 +0000262 ... a, b = b, a+b
Guido van Rossum0616b792007-08-31 03:25:11 +0000263 ... print()
Georg Brandl48310cd2009-01-03 21:18:54 +0000264 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000265 >>> # Now call the function we just defined:
266 ... fib(2000)
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000267 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 +0000268
269.. index::
270 single: documentation strings
271 single: docstrings
272 single: strings, documentation
273
274The keyword :keyword:`def` introduces a function *definition*. It must be
275followed by the function name and the parenthesized list of formal parameters.
276The statements that form the body of the function start at the next line, and
Georg Brandl5d955ed2008-09-13 17:18:21 +0000277must be indented.
Georg Brandl116aa622007-08-15 14:28:22 +0000278
Georg Brandl5d955ed2008-09-13 17:18:21 +0000279The first statement of the function body can optionally be a string literal;
280this string literal is the function's documentation string, or :dfn:`docstring`.
281(More about docstrings can be found in the section :ref:`tut-docstrings`.)
Georg Brandl116aa622007-08-15 14:28:22 +0000282There are tools which use docstrings to automatically produce online or printed
283documentation, or to let the user interactively browse through code; it's good
Georg Brandl5d955ed2008-09-13 17:18:21 +0000284practice to include docstrings in code that you write, so make a habit of it.
Georg Brandl116aa622007-08-15 14:28:22 +0000285
286The *execution* of a function introduces a new symbol table used for the local
287variables of the function. More precisely, all variable assignments in a
288function store the value in the local symbol table; whereas variable references
Georg Brandl86def6c2008-01-21 20:36:10 +0000289first look in the local symbol table, then in the local symbol tables of
290enclosing functions, then in the global symbol table, and finally in the table
pbhde1f95e72019-05-29 05:38:03 +0200291of built-in names. Thus, global variables and variables of enclosing functions
292cannot be directly assigned a value within a function (unless, for global
293variables, named in a :keyword:`global` statement, or, for variables of enclosing
294functions, named in a :keyword:`nonlocal` statement), although they may be
295referenced.
Georg Brandl116aa622007-08-15 14:28:22 +0000296
297The actual parameters (arguments) to a function call are introduced in the local
298symbol table of the called function when it is called; thus, arguments are
299passed using *call by value* (where the *value* is always an object *reference*,
300not the value of the object). [#]_ When a function calls another function, a new
301local symbol table is created for that call.
302
Joannah Nanjekyed12af712020-07-05 22:47:15 -0300303A function definition associates the function name with the function object in
304the current symbol table. The interpreter recognizes the object pointed to by
305that name as a user-defined function. Other names can also point to that same
306function object and can also be used to access the function::
Georg Brandl116aa622007-08-15 14:28:22 +0000307
308 >>> fib
309 <function fib at 10042ed0>
310 >>> f = fib
311 >>> f(100)
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000312 0 1 1 2 3 5 8 13 21 34 55 89
Georg Brandl116aa622007-08-15 14:28:22 +0000313
Georg Brandl5d955ed2008-09-13 17:18:21 +0000314Coming from other languages, you might object that ``fib`` is not a function but
315a procedure since it doesn't return a value. In fact, even functions without a
316:keyword:`return` statement do return a value, albeit a rather boring one. This
317value is called ``None`` (it's a built-in name). Writing the value ``None`` is
318normally suppressed by the interpreter if it would be the only value written.
319You can see it if you really want to using :func:`print`::
Georg Brandl116aa622007-08-15 14:28:22 +0000320
Georg Brandl9afde1c2007-11-01 20:32:30 +0000321 >>> fib(0)
Guido van Rossum0616b792007-08-31 03:25:11 +0000322 >>> print(fib(0))
Georg Brandl116aa622007-08-15 14:28:22 +0000323 None
324
325It is simple to write a function that returns a list of the numbers of the
326Fibonacci series, instead of printing it::
327
Serhiy Storchakadba90392016-05-10 12:01:23 +0300328 >>> def fib2(n): # return Fibonacci series up to n
Georg Brandl116aa622007-08-15 14:28:22 +0000329 ... """Return a list containing the Fibonacci series up to n."""
330 ... result = []
331 ... a, b = 0, 1
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000332 ... while a < n:
333 ... result.append(a) # see below
Georg Brandl116aa622007-08-15 14:28:22 +0000334 ... a, b = b, a+b
335 ... return result
Georg Brandl48310cd2009-01-03 21:18:54 +0000336 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000337 >>> f100 = fib2(100) # call it
338 >>> f100 # write the result
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000339 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Georg Brandl116aa622007-08-15 14:28:22 +0000340
341This example, as usual, demonstrates some new Python features:
342
343* The :keyword:`return` statement returns with a value from a function.
Serhiy Storchaka2b57c432018-12-19 08:09:46 +0200344 :keyword:`!return` without an expression argument returns ``None``. Falling off
Georg Brandl5d955ed2008-09-13 17:18:21 +0000345 the end of a function also returns ``None``.
Georg Brandl116aa622007-08-15 14:28:22 +0000346
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000347* The statement ``result.append(a)`` calls a *method* of the list object
Georg Brandl116aa622007-08-15 14:28:22 +0000348 ``result``. A method is a function that 'belongs' to an object and is named
349 ``obj.methodname``, where ``obj`` is some object (this may be an expression),
350 and ``methodname`` is the name of a method that is defined by the object's type.
351 Different types define different methods. Methods of different types may have
352 the same name without causing ambiguity. (It is possible to define your own
Georg Brandlc6c31782009-06-08 13:41:29 +0000353 object types and methods, using *classes*, see :ref:`tut-classes`)
Georg Brandl116aa622007-08-15 14:28:22 +0000354 The method :meth:`append` shown in the example is defined for list objects; it
355 adds a new element at the end of the list. In this example it is equivalent to
Mark Dickinsonc099ee22009-11-23 16:41:41 +0000356 ``result = result + [a]``, but more efficient.
Georg Brandl116aa622007-08-15 14:28:22 +0000357
358
359.. _tut-defining:
360
361More on Defining Functions
362==========================
363
364It is also possible to define functions with a variable number of arguments.
365There are three forms, which can be combined.
366
367
368.. _tut-defaultargs:
369
370Default Argument Values
371-----------------------
372
373The most useful form is to specify a default value for one or more arguments.
374This creates a function that can be called with fewer arguments than it is
375defined to allow. For example::
376
Berker Peksag0a5120e2016-06-02 11:31:19 -0700377 def ask_ok(prompt, retries=4, reminder='Please try again!'):
Georg Brandl116aa622007-08-15 14:28:22 +0000378 while True:
Georg Brandle9af2842007-08-17 05:54:09 +0000379 ok = input(prompt)
Georg Brandlc6c31782009-06-08 13:41:29 +0000380 if ok in ('y', 'ye', 'yes'):
381 return True
382 if ok in ('n', 'no', 'nop', 'nope'):
383 return False
Georg Brandl116aa622007-08-15 14:28:22 +0000384 retries = retries - 1
Collin Winter58721bc2007-09-10 00:39:52 +0000385 if retries < 0:
Berker Peksag0a5120e2016-06-02 11:31:19 -0700386 raise ValueError('invalid user response')
387 print(reminder)
Georg Brandl116aa622007-08-15 14:28:22 +0000388
Georg Brandlc6c31782009-06-08 13:41:29 +0000389This function can be called in several ways:
390
391* giving only the mandatory argument:
392 ``ask_ok('Do you really want to quit?')``
393* giving one of the optional arguments:
394 ``ask_ok('OK to overwrite the file?', 2)``
395* or even giving all arguments:
396 ``ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')``
Georg Brandl116aa622007-08-15 14:28:22 +0000397
398This example also introduces the :keyword:`in` keyword. This tests whether or
399not a sequence contains a certain value.
400
401The default values are evaluated at the point of function definition in the
402*defining* scope, so that ::
403
404 i = 5
405
406 def f(arg=i):
Guido van Rossum0616b792007-08-31 03:25:11 +0000407 print(arg)
Georg Brandl116aa622007-08-15 14:28:22 +0000408
409 i = 6
410 f()
411
412will print ``5``.
413
414**Important warning:** The default value is evaluated only once. This makes a
415difference when the default is a mutable object such as a list, dictionary, or
416instances of most classes. For example, the following function accumulates the
417arguments passed to it on subsequent calls::
418
419 def f(a, L=[]):
420 L.append(a)
421 return L
422
Guido van Rossum0616b792007-08-31 03:25:11 +0000423 print(f(1))
424 print(f(2))
425 print(f(3))
Georg Brandl116aa622007-08-15 14:28:22 +0000426
427This will print ::
428
429 [1]
430 [1, 2]
431 [1, 2, 3]
432
433If you don't want the default to be shared between subsequent calls, you can
434write the function like this instead::
435
436 def f(a, L=None):
437 if L is None:
438 L = []
439 L.append(a)
440 return L
441
442
443.. _tut-keywordargs:
444
445Keyword Arguments
446-----------------
447
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200448Functions can also be called using :term:`keyword arguments <keyword argument>`
449of the form ``kwarg=value``. For instance, the following function::
Georg Brandl116aa622007-08-15 14:28:22 +0000450
451 def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
Georg Brandle4ac7502007-09-03 07:10:24 +0000452 print("-- This parrot wouldn't", action, end=' ')
Guido van Rossum0616b792007-08-31 03:25:11 +0000453 print("if you put", voltage, "volts through it.")
454 print("-- Lovely plumage, the", type)
455 print("-- It's", state, "!")
Georg Brandl116aa622007-08-15 14:28:22 +0000456
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200457accepts one required argument (``voltage``) and three optional arguments
458(``state``, ``action``, and ``type``). This function can be called in any
459of the following ways::
Georg Brandl116aa622007-08-15 14:28:22 +0000460
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200461 parrot(1000) # 1 positional argument
462 parrot(voltage=1000) # 1 keyword argument
463 parrot(voltage=1000000, action='VOOOOOM') # 2 keyword arguments
464 parrot(action='VOOOOOM', voltage=1000000) # 2 keyword arguments
465 parrot('a million', 'bereft of life', 'jump') # 3 positional arguments
466 parrot('a thousand', state='pushing up the daisies') # 1 positional, 1 keyword
Georg Brandl116aa622007-08-15 14:28:22 +0000467
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200468but all the following calls would be invalid::
Georg Brandl116aa622007-08-15 14:28:22 +0000469
470 parrot() # required argument missing
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200471 parrot(voltage=5.0, 'dead') # non-keyword argument after a keyword argument
472 parrot(110, voltage=220) # duplicate value for the same argument
473 parrot(actor='John Cleese') # unknown keyword argument
Georg Brandl116aa622007-08-15 14:28:22 +0000474
Ezio Melotti7b7e39a2011-12-13 15:49:22 +0200475In a function call, keyword arguments must follow positional arguments.
476All the keyword arguments passed must match one of the arguments
477accepted by the function (e.g. ``actor`` is not a valid argument for the
478``parrot`` function), and their order is not important. This also includes
479non-optional arguments (e.g. ``parrot(voltage=1000)`` is valid too).
480No argument may receive a value more than once.
481Here's an example that fails due to this restriction::
Georg Brandl116aa622007-08-15 14:28:22 +0000482
483 >>> def function(a):
484 ... pass
Georg Brandl48310cd2009-01-03 21:18:54 +0000485 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000486 >>> function(0, a=0)
487 Traceback (most recent call last):
UltimateCoder88569402017-05-03 22:16:45 +0530488 File "<stdin>", line 1, in <module>
Georg Brandl116aa622007-08-15 14:28:22 +0000489 TypeError: function() got multiple values for keyword argument 'a'
490
491When a final formal parameter of the form ``**name`` is present, it receives a
492dictionary (see :ref:`typesmapping`) containing all keyword arguments except for
493those corresponding to a formal parameter. This may be combined with a formal
494parameter of the form ``*name`` (described in the next subsection) which
Julien Palard51ddab82019-05-28 15:10:23 +0200495receives a :ref:`tuple <tut-tuples>` containing the positional
496arguments beyond the formal parameter list. (``*name`` must occur
497before ``**name``.) For example, if we define a function like this::
Georg Brandl116aa622007-08-15 14:28:22 +0000498
499 def cheeseshop(kind, *arguments, **keywords):
Georg Brandl5d955ed2008-09-13 17:18:21 +0000500 print("-- Do you have any", kind, "?")
Guido van Rossum0616b792007-08-31 03:25:11 +0000501 print("-- I'm sorry, we're all out of", kind)
Georg Brandl70543ac2010-10-15 15:32:05 +0000502 for arg in arguments:
503 print(arg)
Georg Brandl5d955ed2008-09-13 17:18:21 +0000504 print("-" * 40)
Jim Fasarakis-Hilliard32e8f9b2017-02-21 08:20:23 +0200505 for kw in keywords:
Georg Brandl70543ac2010-10-15 15:32:05 +0000506 print(kw, ":", keywords[kw])
Georg Brandl116aa622007-08-15 14:28:22 +0000507
508It could be called like this::
509
Georg Brandl5d955ed2008-09-13 17:18:21 +0000510 cheeseshop("Limburger", "It's very runny, sir.",
Georg Brandl116aa622007-08-15 14:28:22 +0000511 "It's really very, VERY runny, sir.",
Georg Brandl5d955ed2008-09-13 17:18:21 +0000512 shopkeeper="Michael Palin",
513 client="John Cleese",
514 sketch="Cheese Shop Sketch")
Georg Brandl116aa622007-08-15 14:28:22 +0000515
Martin Panter1050d2d2016-07-26 11:18:21 +0200516and of course it would print:
517
518.. code-block:: none
Georg Brandl116aa622007-08-15 14:28:22 +0000519
520 -- Do you have any Limburger ?
521 -- I'm sorry, we're all out of Limburger
522 It's very runny, sir.
523 It's really very, VERY runny, sir.
524 ----------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000525 shopkeeper : Michael Palin
Jim Fasarakis-Hilliard32e8f9b2017-02-21 08:20:23 +0200526 client : John Cleese
Georg Brandl116aa622007-08-15 14:28:22 +0000527 sketch : Cheese Shop Sketch
528
Jim Fasarakis-Hilliard32e8f9b2017-02-21 08:20:23 +0200529Note that the order in which the keyword arguments are printed is guaranteed
530to match the order in which they were provided in the function call.
531
Pablo Galindob76302d2019-05-29 00:45:32 +0100532Special parameters
533------------------
534
535By default, arguments may be passed to a Python function either by position
536or explicitly by keyword. For readability and performance, it makes sense to
537restrict the way arguments can be passed so that a developer need only look
538at the function definition to determine if items are passed by position, by
539position or keyword, or by keyword.
540
541A function definition may look like:
542
543.. code-block:: none
544
545 def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
546 ----------- ---------- ----------
547 | | |
548 | Positional or keyword |
549 | - Keyword only
550 -- Positional only
551
552where ``/`` and ``*`` are optional. If used, these symbols indicate the kind of
553parameter by how the arguments may be passed to the function:
554positional-only, positional-or-keyword, and keyword-only. Keyword parameters
555are also referred to as named parameters.
556
557-------------------------------
558Positional-or-Keyword Arguments
559-------------------------------
560
561If ``/`` and ``*`` are not present in the function definition, arguments may
562be passed to a function by position or by keyword.
563
564--------------------------
565Positional-Only Parameters
566--------------------------
567
568Looking at this in a bit more detail, it is possible to mark certain parameters
569as *positional-only*. If *positional-only*, the parameters' order matters, and
570the parameters cannot be passed by keyword. Positional-only parameters are
571placed before a ``/`` (forward-slash). The ``/`` is used to logically
572separate the positional-only parameters from the rest of the parameters.
573If there is no ``/`` in the function definition, there are no positional-only
574parameters.
575
576Parameters following the ``/`` may be *positional-or-keyword* or *keyword-only*.
577
578----------------------
579Keyword-Only Arguments
580----------------------
581
582To mark parameters as *keyword-only*, indicating the parameters must be passed
583by keyword argument, place an ``*`` in the arguments list just before the first
584*keyword-only* parameter.
585
586-----------------
587Function Examples
588-----------------
589
590Consider the following example function definitions paying close attention to the
591markers ``/`` and ``*``::
592
593 >>> def standard_arg(arg):
594 ... print(arg)
595 ...
596 >>> def pos_only_arg(arg, /):
597 ... print(arg)
598 ...
599 >>> def kwd_only_arg(*, arg):
600 ... print(arg)
601 ...
602 >>> def combined_example(pos_only, /, standard, *, kwd_only):
603 ... print(pos_only, standard, kwd_only)
604
605
606The first function definition, ``standard_arg``, the most familiar form,
607places no restrictions on the calling convention and arguments may be
608passed by position or keyword::
609
610 >>> standard_arg(2)
611 2
612
613 >>> standard_arg(arg=2)
614 2
615
616The second function ``pos_only_arg`` is restricted to only use positional
617parameters as there is a ``/`` in the function definition::
618
619 >>> pos_only_arg(1)
620 1
621
622 >>> pos_only_arg(arg=1)
623 Traceback (most recent call last):
624 File "<stdin>", line 1, in <module>
625 TypeError: pos_only_arg() got an unexpected keyword argument 'arg'
626
627The third function ``kwd_only_args`` only allows keyword arguments as indicated
628by a ``*`` in the function definition::
629
630 >>> kwd_only_arg(3)
631 Traceback (most recent call last):
632 File "<stdin>", line 1, in <module>
633 TypeError: kwd_only_arg() takes 0 positional arguments but 1 was given
634
635 >>> kwd_only_arg(arg=3)
636 3
637
638And the last uses all three calling conventions in the same function
639definition::
640
641 >>> combined_example(1, 2, 3)
642 Traceback (most recent call last):
643 File "<stdin>", line 1, in <module>
644 TypeError: combined_example() takes 2 positional arguments but 3 were given
645
646 >>> combined_example(1, 2, kwd_only=3)
647 1 2 3
648
649 >>> combined_example(1, standard=2, kwd_only=3)
650 1 2 3
651
652 >>> combined_example(pos_only=1, standard=2, kwd_only=3)
653 Traceback (most recent call last):
654 File "<stdin>", line 1, in <module>
655 TypeError: combined_example() got an unexpected keyword argument 'pos_only'
656
657
658Finally, consider this function definition which has a potential collision between the positional argument ``name`` and ``**kwds`` which has ``name`` as a key::
659
660 def foo(name, **kwds):
661 return 'name' in kwds
662
663There is no possible call that will make it return ``True`` as the keyword ``'name'``
Denis Ovsienko0be7c212020-08-19 12:29:47 +0100664will always bind to the first parameter. For example::
Pablo Galindob76302d2019-05-29 00:45:32 +0100665
666 >>> foo(1, **{'name': 2})
667 Traceback (most recent call last):
668 File "<stdin>", line 1, in <module>
669 TypeError: foo() got multiple values for argument 'name'
670 >>>
671
672But using ``/`` (positional only arguments), it is possible since it allows ``name`` as a positional argument and ``'name'`` as a key in the keyword arguments::
673
674 def foo(name, /, **kwds):
675 return 'name' in kwds
676 >>> foo(1, **{'name': 2})
677 True
678
679In other words, the names of positional-only parameters can be used in
680``**kwds`` without ambiguity.
681
682-----
683Recap
684-----
685
686The use case will determine which parameters to use in the function definition::
687
688 def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
689
690As guidance:
691
692* Use positional-only if you want the name of the parameters to not be
693 available to the user. This is useful when parameter names have no real
694 meaning, if you want to enforce the order of the arguments when the function
695 is called or if you need to take some positional parameters and arbitrary
696 keywords.
697* Use keyword-only when names have meaning and the function definition is
698 more understandable by being explicit with names or you want to prevent
699 users relying on the position of the argument being passed.
Adorilson Bezerrab7af4e72019-09-16 04:04:58 -0300700* For an API, use positional-only to prevent breaking API changes
Pablo Galindob76302d2019-05-29 00:45:32 +0100701 if the parameter's name is modified in the future.
Georg Brandl116aa622007-08-15 14:28:22 +0000702
703.. _tut-arbitraryargs:
704
705Arbitrary Argument Lists
706------------------------
707
Christian Heimesdae2a892008-04-19 00:55:37 +0000708.. index::
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200709 single: * (asterisk); in function calls
Christian Heimesdae2a892008-04-19 00:55:37 +0000710
Georg Brandl116aa622007-08-15 14:28:22 +0000711Finally, the least frequently used option is to specify that a function can be
712called with an arbitrary number of arguments. These arguments will be wrapped
Georg Brandl5d955ed2008-09-13 17:18:21 +0000713up in a tuple (see :ref:`tut-tuples`). Before the variable number of arguments,
714zero or more normal arguments may occur. ::
Georg Brandl116aa622007-08-15 14:28:22 +0000715
Georg Brandlf08a9dd2008-06-10 16:57:31 +0000716 def write_multiple_items(file, separator, *args):
717 file.write(separator.join(args))
Georg Brandl116aa622007-08-15 14:28:22 +0000718
Georg Brandl48310cd2009-01-03 21:18:54 +0000719
Guido van Rossum0616b792007-08-31 03:25:11 +0000720Normally, these ``variadic`` arguments will be last in the list of formal
Georg Brandl48310cd2009-01-03 21:18:54 +0000721parameters, because they scoop up all remaining input arguments that are
Guido van Rossum0616b792007-08-31 03:25:11 +0000722passed to the function. Any formal parameters which occur after the ``*args``
Georg Brandl48310cd2009-01-03 21:18:54 +0000723parameter are 'keyword-only' arguments, meaning that they can only be used as
Georg Brandle4ac7502007-09-03 07:10:24 +0000724keywords rather than positional arguments. ::
Georg Brandl48310cd2009-01-03 21:18:54 +0000725
Guido van Rossum0616b792007-08-31 03:25:11 +0000726 >>> def concat(*args, sep="/"):
Serhiy Storchakadba90392016-05-10 12:01:23 +0300727 ... return sep.join(args)
Guido van Rossum0616b792007-08-31 03:25:11 +0000728 ...
729 >>> concat("earth", "mars", "venus")
730 'earth/mars/venus'
731 >>> concat("earth", "mars", "venus", sep=".")
732 'earth.mars.venus'
Georg Brandl116aa622007-08-15 14:28:22 +0000733
734.. _tut-unpacking-arguments:
735
736Unpacking Argument Lists
737------------------------
738
739The reverse situation occurs when the arguments are already in a list or tuple
740but need to be unpacked for a function call requiring separate positional
741arguments. For instance, the built-in :func:`range` function expects separate
742*start* and *stop* arguments. If they are not available separately, write the
Raymond Hettingerfb28fcc2019-03-27 21:03:02 -0700743function call with the ``*``\ -operator to unpack the arguments out of a list
Georg Brandl116aa622007-08-15 14:28:22 +0000744or tuple::
745
Guido van Rossum0616b792007-08-31 03:25:11 +0000746 >>> list(range(3, 6)) # normal call with separate arguments
Georg Brandl116aa622007-08-15 14:28:22 +0000747 [3, 4, 5]
748 >>> args = [3, 6]
Guido van Rossum0616b792007-08-31 03:25:11 +0000749 >>> list(range(*args)) # call with arguments unpacked from a list
Georg Brandl116aa622007-08-15 14:28:22 +0000750 [3, 4, 5]
751
Christian Heimesdae2a892008-04-19 00:55:37 +0000752.. index::
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300753 single: **; in function calls
Christian Heimesdae2a892008-04-19 00:55:37 +0000754
Serhiy Storchaka3f819ca2018-10-31 02:26:06 +0200755In the same fashion, dictionaries can deliver keyword arguments with the
Raymond Hettingerfb28fcc2019-03-27 21:03:02 -0700756``**``\ -operator::
Georg Brandl116aa622007-08-15 14:28:22 +0000757
758 >>> def parrot(voltage, state='a stiff', action='voom'):
Georg Brandle4ac7502007-09-03 07:10:24 +0000759 ... print("-- This parrot wouldn't", action, end=' ')
Guido van Rossum0616b792007-08-31 03:25:11 +0000760 ... print("if you put", voltage, "volts through it.", end=' ')
761 ... print("E's", state, "!")
Georg Brandl116aa622007-08-15 14:28:22 +0000762 ...
763 >>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
764 >>> parrot(**d)
765 -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
766
767
768.. _tut-lambda:
769
Georg Brandlde5aff12013-10-06 10:22:45 +0200770Lambda Expressions
771------------------
Georg Brandl116aa622007-08-15 14:28:22 +0000772
Georg Brandlde5aff12013-10-06 10:22:45 +0200773Small anonymous functions can be created with the :keyword:`lambda` keyword.
774This function returns the sum of its two arguments: ``lambda a, b: a+b``.
Georg Brandl242e6a02013-10-06 10:28:39 +0200775Lambda functions can be used wherever function objects are required. They are
Georg Brandlde5aff12013-10-06 10:22:45 +0200776syntactically restricted to a single expression. Semantically, they are just
777syntactic sugar for a normal function definition. Like nested function
778definitions, lambda functions can reference variables from the containing
779scope::
Georg Brandl116aa622007-08-15 14:28:22 +0000780
781 >>> def make_incrementor(n):
782 ... return lambda x: x + n
783 ...
784 >>> f = make_incrementor(42)
785 >>> f(0)
786 42
787 >>> f(1)
788 43
789
Georg Brandlde5aff12013-10-06 10:22:45 +0200790The above example uses a lambda expression to return a function. Another use
791is to pass a small function as an argument::
792
793 >>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
794 >>> pairs.sort(key=lambda pair: pair[1])
795 >>> pairs
796 [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
797
Georg Brandl116aa622007-08-15 14:28:22 +0000798
799.. _tut-docstrings:
800
801Documentation Strings
802---------------------
803
804.. index::
805 single: docstrings
806 single: documentation strings
807 single: strings, documentation
808
Guido van Rossum0616b792007-08-31 03:25:11 +0000809Here are some conventions about the content and formatting of documentation
Georg Brandl48310cd2009-01-03 21:18:54 +0000810strings.
Georg Brandl116aa622007-08-15 14:28:22 +0000811
812The first line should always be a short, concise summary of the object's
813purpose. For brevity, it should not explicitly state the object's name or type,
814since these are available by other means (except if the name happens to be a
815verb describing a function's operation). This line should begin with a capital
816letter and end with a period.
817
818If there are more lines in the documentation string, the second line should be
819blank, visually separating the summary from the rest of the description. The
820following lines should be one or more paragraphs describing the object's calling
821conventions, its side effects, etc.
822
823The Python parser does not strip indentation from multi-line string literals in
824Python, so tools that process documentation have to strip indentation if
825desired. This is done using the following convention. The first non-blank line
826*after* the first line of the string determines the amount of indentation for
827the entire documentation string. (We can't use the first line since it is
828generally adjacent to the string's opening quotes so its indentation is not
829apparent in the string literal.) Whitespace "equivalent" to this indentation is
830then stripped from the start of all lines of the string. Lines that are
831indented less should not occur, but if they occur all their leading whitespace
832should be stripped. Equivalence of whitespace should be tested after expansion
833of tabs (to 8 spaces, normally).
834
835Here is an example of a multi-line docstring::
836
837 >>> def my_function():
838 ... """Do nothing, but document it.
Georg Brandl48310cd2009-01-03 21:18:54 +0000839 ...
Georg Brandl116aa622007-08-15 14:28:22 +0000840 ... No, really, it doesn't do anything.
841 ... """
842 ... pass
Georg Brandl48310cd2009-01-03 21:18:54 +0000843 ...
Guido van Rossum0616b792007-08-31 03:25:11 +0000844 >>> print(my_function.__doc__)
Georg Brandl116aa622007-08-15 14:28:22 +0000845 Do nothing, but document it.
846
847 No, really, it doesn't do anything.
848
849
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200850.. _tut-annotations:
851
852Function Annotations
853--------------------
854
855.. sectionauthor:: Zachary Ware <zachary.ware@gmail.com>
856.. index::
857 pair: function; annotations
Serhiy Storchakaddb961d2018-10-26 09:00:49 +0300858 single: ->; function annotations
Serhiy Storchaka913876d2018-10-28 13:41:26 +0200859 single: : (colon); function annotations
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200860
Zachary Waref3b990e2015-04-13 11:30:47 -0500861:ref:`Function annotations <function>` are completely optional metadata
Neeraj Badlani643ff712018-04-25 10:52:13 -0700862information about the types used by user-defined functions (see :pep:`3107` and
863:pep:`484` for more information).
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200864
Cheryl Sabellab7105c92018-12-24 00:09:09 -0500865:term:`Annotations <function annotation>` are stored in the :attr:`__annotations__`
866attribute of the function as a dictionary and have no effect on any other part of the
867function. Parameter annotations are defined by a colon after the parameter name, followed
868by an expression evaluating to the value of the annotation. Return annotations are
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200869defined by a literal ``->``, followed by an expression, between the parameter
870list and the colon denoting the end of the :keyword:`def` statement. The
871following example has a positional argument, a keyword argument, and the return
Zachary Waref3b990e2015-04-13 11:30:47 -0500872value annotated::
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200873
Zachary Waref3b990e2015-04-13 11:30:47 -0500874 >>> def f(ham: str, eggs: str = 'eggs') -> str:
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200875 ... print("Annotations:", f.__annotations__)
876 ... print("Arguments:", ham, eggs)
Zachary Waref3b990e2015-04-13 11:30:47 -0500877 ... return ham + ' and ' + eggs
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200878 ...
Zachary Waref3b990e2015-04-13 11:30:47 -0500879 >>> f('spam')
880 Annotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>}
881 Arguments: spam eggs
882 'spam and eggs'
Andrew Svetlov1491cbd2012-11-01 21:26:55 +0200883
Christian Heimes043d6f62008-01-07 17:19:16 +0000884.. _tut-codingstyle:
885
886Intermezzo: Coding Style
887========================
888
889.. sectionauthor:: Georg Brandl <georg@python.org>
890.. index:: pair: coding; style
891
892Now that you are about to write longer, more complex pieces of Python, it is a
893good time to talk about *coding style*. Most languages can be written (or more
894concise, *formatted*) in different styles; some are more readable than others.
895Making it easy for others to read your code is always a good idea, and adopting
896a nice coding style helps tremendously for that.
897
Christian Heimesdae2a892008-04-19 00:55:37 +0000898For Python, :pep:`8` has emerged as the style guide that most projects adhere to;
Christian Heimes043d6f62008-01-07 17:19:16 +0000899it promotes a very readable and eye-pleasing coding style. Every Python
900developer should read it at some point; here are the most important points
901extracted for you:
902
903* Use 4-space indentation, and no tabs.
904
905 4 spaces are a good compromise between small indentation (allows greater
906 nesting depth) and large indentation (easier to read). Tabs introduce
907 confusion, and are best left out.
908
909* Wrap lines so that they don't exceed 79 characters.
910
911 This helps users with small displays and makes it possible to have several
912 code files side-by-side on larger displays.
913
914* Use blank lines to separate functions and classes, and larger blocks of
915 code inside functions.
916
917* When possible, put comments on a line of their own.
918
919* Use docstrings.
920
921* Use spaces around operators and after commas, but not directly inside
922 bracketing constructs: ``a = f(1, 2) + g(3, 4)``.
923
924* Name your classes and functions consistently; the convention is to use
Julien Palard2da622f2019-07-08 23:06:32 +0200925 ``UpperCamelCase`` for classes and ``lowercase_with_underscores`` for functions
Georg Brandl5d955ed2008-09-13 17:18:21 +0000926 and methods. Always use ``self`` as the name for the first method argument
927 (see :ref:`tut-firstclasses` for more on classes and methods).
Christian Heimes043d6f62008-01-07 17:19:16 +0000928
929* Don't use fancy encodings if your code is meant to be used in international
Georg Brandl7ae90dd2009-06-08 18:59:09 +0000930 environments. Python's default, UTF-8, or even plain ASCII work best in any
931 case.
932
933* Likewise, don't use non-ASCII characters in identifiers if there is only the
934 slightest chance people speaking a different language will read or maintain
935 the code.
Christian Heimes043d6f62008-01-07 17:19:16 +0000936
Georg Brandl116aa622007-08-15 14:28:22 +0000937
938.. rubric:: Footnotes
939
Christian Heimes043d6f62008-01-07 17:19:16 +0000940.. [#] Actually, *call by object reference* would be a better description,
941 since if a mutable object is passed, the caller will see any changes the
942 callee makes to it (items inserted into a list).