blob: 33fbeec1144d7e53d619b39006eda9d013045c7b [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001
2.. _expressions:
3
4***********
5Expressions
6***********
7
Georg Brandl4b491312007-08-31 09:22:56 +00008.. index:: expression, BNF
Georg Brandl116aa622007-08-15 14:28:22 +00009
10This chapter explains the meaning of the elements of expressions in Python.
11
Georg Brandl116aa622007-08-15 14:28:22 +000012**Syntax Notes:** In this and the following chapters, extended BNF notation will
13be used to describe syntax, not lexical analysis. When (one alternative of) a
14syntax rule has the form
15
16.. productionlist:: *
17 name: `othername`
18
Georg Brandl116aa622007-08-15 14:28:22 +000019and no semantics are given, the semantics of this form of ``name`` are the same
20as for ``othername``.
21
22
23.. _conversions:
24
25Arithmetic conversions
26======================
27
28.. index:: pair: arithmetic; conversion
29
Georg Brandl116aa622007-08-15 14:28:22 +000030When a description of an arithmetic operator below uses the phrase "the numeric
Georg Brandl96593ed2007-09-07 14:15:41 +000031arguments are converted to a common type," this means that the operator
32implementation for built-in types works that way:
Georg Brandl116aa622007-08-15 14:28:22 +000033
34* If either argument is a complex number, the other is converted to complex;
35
36* otherwise, if either argument is a floating point number, the other is
37 converted to floating point;
38
Georg Brandl96593ed2007-09-07 14:15:41 +000039* otherwise, both must be integers and no conversion is necessary.
Georg Brandl116aa622007-08-15 14:28:22 +000040
41Some additional rules apply for certain operators (e.g., a string left argument
Georg Brandl96593ed2007-09-07 14:15:41 +000042to the '%' operator). Extensions must define their own conversion behavior.
Georg Brandl116aa622007-08-15 14:28:22 +000043
44
45.. _atoms:
46
47Atoms
48=====
49
Georg Brandl96593ed2007-09-07 14:15:41 +000050.. index:: atom
Georg Brandl116aa622007-08-15 14:28:22 +000051
52Atoms are the most basic elements of expressions. The simplest atoms are
Georg Brandl96593ed2007-09-07 14:15:41 +000053identifiers or literals. Forms enclosed in parentheses, brackets or braces are
54also categorized syntactically as atoms. The syntax for atoms is:
Georg Brandl116aa622007-08-15 14:28:22 +000055
56.. productionlist::
57 atom: `identifier` | `literal` | `enclosure`
Georg Brandl96593ed2007-09-07 14:15:41 +000058 enclosure: `parenth_form` | `list_display` | `dict_display` | `set_display`
59 : | `generator_expression` | `yield_atom`
Georg Brandl116aa622007-08-15 14:28:22 +000060
61
62.. _atom-identifiers:
63
64Identifiers (Names)
65-------------------
66
Georg Brandl96593ed2007-09-07 14:15:41 +000067.. index:: name, identifier
Georg Brandl116aa622007-08-15 14:28:22 +000068
69An identifier occurring as an atom is a name. See section :ref:`identifiers`
70for lexical definition and section :ref:`naming` for documentation of naming and
71binding.
72
73.. index:: exception: NameError
74
75When the name is bound to an object, evaluation of the atom yields that object.
76When a name is not bound, an attempt to evaluate it raises a :exc:`NameError`
77exception.
78
79.. index::
80 pair: name; mangling
81 pair: private; names
82
83**Private name mangling:** When an identifier that textually occurs in a class
84definition begins with two or more underscore characters and does not end in two
85or more underscores, it is considered a :dfn:`private name` of that class.
86Private names are transformed to a longer form before code is generated for
87them. The transformation inserts the class name in front of the name, with
88leading underscores removed, and a single underscore inserted in front of the
89class name. For example, the identifier ``__spam`` occurring in a class named
90``Ham`` will be transformed to ``_Ham__spam``. This transformation is
91independent of the syntactical context in which the identifier is used. If the
92transformed name is extremely long (longer than 255 characters), implementation
93defined truncation may happen. If the class name consists only of underscores,
94no transformation is done.
95
Georg Brandl116aa622007-08-15 14:28:22 +000096
97.. _atom-literals:
98
99Literals
100--------
101
102.. index:: single: literal
103
Georg Brandl96593ed2007-09-07 14:15:41 +0000104Python supports string and bytes literals and various numeric literals:
Georg Brandl116aa622007-08-15 14:28:22 +0000105
106.. productionlist::
Georg Brandl96593ed2007-09-07 14:15:41 +0000107 literal: `stringliteral` | `bytesliteral`
108 : | `integer` | `floatnumber` | `imagnumber`
Georg Brandl116aa622007-08-15 14:28:22 +0000109
Georg Brandl96593ed2007-09-07 14:15:41 +0000110Evaluation of a literal yields an object of the given type (string, bytes,
111integer, floating point number, complex number) with the given value. The value
112may be approximated in the case of floating point and imaginary (complex)
Georg Brandl116aa622007-08-15 14:28:22 +0000113literals. See section :ref:`literals` for details.
114
115.. index::
116 triple: immutable; data; type
117 pair: immutable; object
118
Georg Brandl96593ed2007-09-07 14:15:41 +0000119With the exception of bytes literals, these all correspond to immutable data
120types, and hence the object's identity is less important than its value.
121Multiple evaluations of literals with the same value (either the same occurrence
122in the program text or a different occurrence) may obtain the same object or a
123different object with the same value.
Georg Brandl116aa622007-08-15 14:28:22 +0000124
125
126.. _parenthesized:
127
128Parenthesized forms
129-------------------
130
131.. index:: single: parenthesized form
132
133A parenthesized form is an optional expression list enclosed in parentheses:
134
135.. productionlist::
136 parenth_form: "(" [`expression_list`] ")"
137
138A parenthesized expression list yields whatever that expression list yields: if
139the list contains at least one comma, it yields a tuple; otherwise, it yields
140the single expression that makes up the expression list.
141
142.. index:: pair: empty; tuple
143
144An empty pair of parentheses yields an empty tuple object. Since tuples are
145immutable, the rules for literals apply (i.e., two occurrences of the empty
146tuple may or may not yield the same object).
147
148.. index::
149 single: comma
150 pair: tuple; display
151
152Note that tuples are not formed by the parentheses, but rather by use of the
153comma operator. The exception is the empty tuple, for which parentheses *are*
154required --- allowing unparenthesized "nothing" in expressions would cause
155ambiguities and allow common typos to pass uncaught.
156
157
Georg Brandl96593ed2007-09-07 14:15:41 +0000158.. _comprehensions:
159
160Displays for lists, sets and dictionaries
161-----------------------------------------
162
163For constructing a list, a set or a dictionary Python provides special syntax
164called "displays", each of them in two flavors:
165
166* either the container contents are listed explicitly, or
167
168* they are computed via a set of looping and filtering instructions, called a
169 :dfn:`comprehension`.
170
171Common syntax elements for comprehensions are:
172
173.. productionlist::
174 comprehension: `expression` `comp_for`
175 comp_for: "for" `target_list` "in" `or_test` [`comp_iter`]
176 comp_iter: `comp_for` | `comp_if`
177 comp_if: "if" `expression_nocond` [`comp_iter`]
178
179The comprehension consists of a single expression followed by at least one
180:keyword:`for` clause and zero or more :keyword:`for` or :keyword:`if` clauses.
181In this case, the elements of the new container are those that would be produced
182by considering each of the :keyword:`for` or :keyword:`if` clauses a block,
183nesting from left to right, and evaluating the expression to produce an element
184each time the innermost block is reached.
185
186
Georg Brandl116aa622007-08-15 14:28:22 +0000187.. _lists:
188
189List displays
190-------------
191
192.. index::
193 pair: list; display
194 pair: list; comprehensions
Georg Brandl96593ed2007-09-07 14:15:41 +0000195 pair: empty; list
196 object: list
Georg Brandl116aa622007-08-15 14:28:22 +0000197
198A list display is a possibly empty series of expressions enclosed in square
199brackets:
200
201.. productionlist::
Georg Brandl96593ed2007-09-07 14:15:41 +0000202 list_display: "[" [`expression_list` | `comprehension`] "]"
Georg Brandl116aa622007-08-15 14:28:22 +0000203
Georg Brandl96593ed2007-09-07 14:15:41 +0000204A list display yields a new list object, the contents being specified by either
205a list of expressions or a comprehension. When a comma-separated list of
206expressions is supplied, its elements are evaluated from left to right and
207placed into the list object in that order. When a comprehension is supplied,
208the list is constructed from the elements resulting from the comprehension.
Georg Brandl116aa622007-08-15 14:28:22 +0000209
210
Georg Brandl96593ed2007-09-07 14:15:41 +0000211.. _set:
Georg Brandl116aa622007-08-15 14:28:22 +0000212
Georg Brandl96593ed2007-09-07 14:15:41 +0000213Set displays
214------------
Georg Brandl116aa622007-08-15 14:28:22 +0000215
Georg Brandl96593ed2007-09-07 14:15:41 +0000216.. index:: pair: set; display
217 object: set
Georg Brandl116aa622007-08-15 14:28:22 +0000218
Georg Brandl96593ed2007-09-07 14:15:41 +0000219A set display is denoted by curly braces and distinguishable from dictionary
220displays by the lack of colons separating keys and values:
Georg Brandl116aa622007-08-15 14:28:22 +0000221
222.. productionlist::
Georg Brandl96593ed2007-09-07 14:15:41 +0000223 set_display: "{" [`expression_list` | `comprehension`] "}"
Georg Brandl116aa622007-08-15 14:28:22 +0000224
Georg Brandl96593ed2007-09-07 14:15:41 +0000225A set display yields a new mutable set object, the contents being specified by
226either a sequence of expressions or a comprehension. When a comma-separated
227list of expressions is supplied, its elements are evaluated from left to right
228and added to the set object. When a comprehension is supplied, the set is
229constructed from the elements resulting from the comprehension.
Georg Brandl116aa622007-08-15 14:28:22 +0000230
231
232.. _dict:
233
234Dictionary displays
235-------------------
236
237.. index:: pair: dictionary; display
Georg Brandl96593ed2007-09-07 14:15:41 +0000238 key, datum, key/datum pair
239 object: dictionary
Georg Brandl116aa622007-08-15 14:28:22 +0000240
241A dictionary display is a possibly empty series of key/datum pairs enclosed in
242curly braces:
243
244.. productionlist::
Georg Brandl96593ed2007-09-07 14:15:41 +0000245 dict_display: "{" [`key_datum_list` | `dict_comprehension`] "}"
Georg Brandl116aa622007-08-15 14:28:22 +0000246 key_datum_list: `key_datum` ("," `key_datum`)* [","]
247 key_datum: `expression` ":" `expression`
Georg Brandl96593ed2007-09-07 14:15:41 +0000248 dict_comprehension: `expression` ":" `expression` `comp_for`
Georg Brandl116aa622007-08-15 14:28:22 +0000249
250A dictionary display yields a new dictionary object.
251
Georg Brandl96593ed2007-09-07 14:15:41 +0000252If a comma-separated sequence of key/datum pairs is given, they are evaluated
253from left to right to define the entries of the dictionary: each key object is
254used as a key into the dictionary to store the corresponding datum. This means
255that you can specify the same key multiple times in the key/datum list, and the
256final dictionary's value for that key will be the last one given.
257
258A dict comprehension, in contrast to list and set comprehensions, needs two
259expressions separated with a colon followed by the usual "for" and "if" clauses.
260When the comprehension is run, the resulting key and value elements are inserted
261in the new dictionary in the order they are produced.
Georg Brandl116aa622007-08-15 14:28:22 +0000262
263.. index:: pair: immutable; object
Georg Brandl96593ed2007-09-07 14:15:41 +0000264 hashable
Georg Brandl116aa622007-08-15 14:28:22 +0000265
266Restrictions on the types of the key values are listed earlier in section
267:ref:`types`. (To summarize, the key type should be hashable, which excludes
268all mutable objects.) Clashes between duplicate keys are not detected; the last
269datum (textually rightmost in the display) stored for a given key value
270prevails.
271
272
Georg Brandl96593ed2007-09-07 14:15:41 +0000273.. _genexpr:
274
275Generator expressions
276---------------------
277
278.. index:: pair: generator; expression
279 object: generator
280
281A generator expression is a compact generator notation in parentheses:
282
283.. productionlist::
284 generator_expression: "(" `expression` `comp_for` ")"
285
286A generator expression yields a new generator object. Its syntax is the same as
287for comprehensions, except that it is enclosed in parentheses instead of
288brackets or curly braces.
289
290Variables used in the generator expression are evaluated lazily when the
291:meth:`__next__` method is called for generator object (in the same fashion as
292normal generators). However, the leftmost :keyword:`for` clause is immediately
293evaluated, so that an error produced by it can be seen before any other possible
294error in the code that handles the generator expression. Subsequent
295:keyword:`for` clauses cannot be evaluated immediately since they may depend on
296the previous :keyword:`for` loop. For example: ``(x*y for x in range(10) for y
297in bar(x))``.
298
299The parentheses can be omitted on calls with only one argument. See section
300:ref:`calls` for the detail.
301
302
Georg Brandl116aa622007-08-15 14:28:22 +0000303.. _yieldexpr:
304
305Yield expressions
306-----------------
307
308.. index::
309 keyword: yield
310 pair: yield; expression
311 pair: generator; function
312
313.. productionlist::
314 yield_atom: "(" `yield_expression` ")"
315 yield_expression: "yield" [`expression_list`]
316
Georg Brandl116aa622007-08-15 14:28:22 +0000317The :keyword:`yield` expression is only used when defining a generator function,
Georg Brandl96593ed2007-09-07 14:15:41 +0000318and can only be used in the body of a function definition. Using a
Georg Brandl116aa622007-08-15 14:28:22 +0000319:keyword:`yield` expression in a function definition is sufficient to cause that
320definition to create a generator function instead of a normal function.
321
322When a generator function is called, it returns an iterator known as a
323generator. That generator then controls the execution of a generator function.
324The execution starts when one of the generator's methods is called. At that
325time, the execution proceeds to the first :keyword:`yield` expression, where it
326is suspended again, returning the value of :token:`expression_list` to
327generator's caller. By suspended we mean that all local state is retained,
328including the current bindings of local variables, the instruction pointer, and
329the internal evaluation stack. When the execution is resumed by calling one of
330the generator's methods, the function can proceed exactly as if the
Georg Brandl96593ed2007-09-07 14:15:41 +0000331:keyword:`yield` expression was just another external call. The value of the
Georg Brandl116aa622007-08-15 14:28:22 +0000332:keyword:`yield` expression after resuming depends on the method which resumed
333the execution.
334
335.. index:: single: coroutine
336
337All of this makes generator functions quite similar to coroutines; they yield
338multiple times, they have more than one entry point and their execution can be
339suspended. The only difference is that a generator function cannot control
340where should the execution continue after it yields; the control is always
341transfered to the generator's caller.
342
343.. index:: object: generator
344
345The following generator's methods can be used to control the execution of a
346generator function:
347
348.. index:: exception: StopIteration
349
350
Georg Brandl96593ed2007-09-07 14:15:41 +0000351.. method:: generator.__next__()
Georg Brandl116aa622007-08-15 14:28:22 +0000352
Georg Brandl96593ed2007-09-07 14:15:41 +0000353 Starts the execution of a generator function or resumes it at the last
354 executed :keyword:`yield` expression. When a generator function is resumed
355 with a :meth:`next` method, the current :keyword:`yield` expression always
356 evaluates to :const:`None`. The execution then continues to the next
357 :keyword:`yield` expression, where the generator is suspended again, and the
358 value of the :token:`expression_list` is returned to :meth:`next`'s caller.
359 If the generator exits without yielding another value, a :exc:`StopIteration`
360 exception is raised.
361
362 This method is normally called implicitly, e.g. by a :keyword:`for` loop, or
363 by the built-in :func:`next` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000364
365
366.. method:: generator.send(value)
367
368 Resumes the execution and "sends" a value into the generator function. The
369 ``value`` argument becomes the result of the current :keyword:`yield`
370 expression. The :meth:`send` method returns the next value yielded by the
371 generator, or raises :exc:`StopIteration` if the generator exits without
Georg Brandl96593ed2007-09-07 14:15:41 +0000372 yielding another value. When :meth:`send` is called to start the generator,
373 it must be called with :const:`None` as the argument, because there is no
Georg Brandl116aa622007-08-15 14:28:22 +0000374 :keyword:`yield` expression that could receieve the value.
375
376
377.. method:: generator.throw(type[, value[, traceback]])
378
379 Raises an exception of type ``type`` at the point where generator was paused,
380 and returns the next value yielded by the generator function. If the generator
381 exits without yielding another value, a :exc:`StopIteration` exception is
382 raised. If the generator function does not catch the passed-in exception, or
383 raises a different exception, then that exception propagates to the caller.
384
385.. index:: exception: GeneratorExit
386
387
388.. method:: generator.close()
389
390 Raises a :exc:`GeneratorExit` at the point where the generator function was
Georg Brandl96593ed2007-09-07 14:15:41 +0000391 paused. If the generator function then raises :exc:`StopIteration` (by
392 exiting normally, or due to already being closed) or :exc:`GeneratorExit` (by
393 not catching the exception), close returns to its caller. If the generator
394 yields a value, a :exc:`RuntimeError` is raised. If the generator raises any
395 other exception, it is propagated to the caller. :meth:`close` does nothing
396 if the generator has already exited due to an exception or normal exit.
Georg Brandl116aa622007-08-15 14:28:22 +0000397
398Here is a simple example that demonstrates the behavior of generators and
399generator functions::
400
401 >>> def echo(value=None):
Georg Brandl6911e3c2007-09-04 07:15:32 +0000402 ... print("Execution starts when 'next()' is called for the first time.")
Georg Brandl116aa622007-08-15 14:28:22 +0000403 ... try:
404 ... while True:
405 ... try:
406 ... value = (yield value)
407 ... except GeneratorExit:
408 ... # never catch GeneratorExit
409 ... raise
410 ... except Exception, e:
411 ... value = e
412 ... finally:
Georg Brandl6911e3c2007-09-04 07:15:32 +0000413 ... print("Don't forget to clean up when 'close()' is called.")
Georg Brandl116aa622007-08-15 14:28:22 +0000414 ...
415 >>> generator = echo(1)
Georg Brandl96593ed2007-09-07 14:15:41 +0000416 >>> print(next(generator))
Georg Brandl116aa622007-08-15 14:28:22 +0000417 Execution starts when 'next()' is called for the first time.
418 1
Georg Brandl96593ed2007-09-07 14:15:41 +0000419 >>> print(next(generator))
Georg Brandl116aa622007-08-15 14:28:22 +0000420 None
Georg Brandl6911e3c2007-09-04 07:15:32 +0000421 >>> print(generator.send(2))
Georg Brandl116aa622007-08-15 14:28:22 +0000422 2
423 >>> generator.throw(TypeError, "spam")
424 TypeError('spam',)
425 >>> generator.close()
426 Don't forget to clean up when 'close()' is called.
427
428
429.. seealso::
430
431 :pep:`0342` - Coroutines via Enhanced Generators
Georg Brandl96593ed2007-09-07 14:15:41 +0000432 The proposal to enhance the API and syntax of generators, making them
433 usable as simple coroutines.
Georg Brandl116aa622007-08-15 14:28:22 +0000434
435
436.. _primaries:
437
438Primaries
439=========
440
441.. index:: single: primary
442
443Primaries represent the most tightly bound operations of the language. Their
444syntax is:
445
446.. productionlist::
447 primary: `atom` | `attributeref` | `subscription` | `slicing` | `call`
448
449
450.. _attribute-references:
451
452Attribute references
453--------------------
454
455.. index:: pair: attribute; reference
456
457An attribute reference is a primary followed by a period and a name:
458
459.. productionlist::
460 attributeref: `primary` "." `identifier`
461
462.. index::
463 exception: AttributeError
464 object: module
465 object: list
466
467The primary must evaluate to an object of a type that supports attribute
Georg Brandl96593ed2007-09-07 14:15:41 +0000468references, which most objects do. This object is then asked to produce the
469attribute whose name is the identifier (which can be customized by overriding
470the :meth:`__getattr__` method). If this attribute is not available, the
471exception :exc:`AttributeError` is raised. Otherwise, the type and value of the
472object produced is determined by the object. Multiple evaluations of the same
473attribute reference may yield different objects.
Georg Brandl116aa622007-08-15 14:28:22 +0000474
475
476.. _subscriptions:
477
478Subscriptions
479-------------
480
481.. index:: single: subscription
482
483.. index::
484 object: sequence
485 object: mapping
486 object: string
487 object: tuple
488 object: list
489 object: dictionary
490 pair: sequence; item
491
492A subscription selects an item of a sequence (string, tuple or list) or mapping
493(dictionary) object:
494
495.. productionlist::
496 subscription: `primary` "[" `expression_list` "]"
497
Georg Brandl96593ed2007-09-07 14:15:41 +0000498The primary must evaluate to an object that supports subscription, e.g. a list
499or dictionary. User-defined objects can support subscription by defining a
500:meth:`__getitem__` method.
501
502For built-in objects, there are two types of objects that support subscription:
Georg Brandl116aa622007-08-15 14:28:22 +0000503
504If the primary is a mapping, the expression list must evaluate to an object
505whose value is one of the keys of the mapping, and the subscription selects the
506value in the mapping that corresponds to that key. (The expression list is a
507tuple except if it has exactly one item.)
508
Georg Brandl96593ed2007-09-07 14:15:41 +0000509If the primary is a sequence, the expression (list) must evaluate to an integer.
510If this value is negative, the length of the sequence is added to it (so that,
511e.g., ``x[-1]`` selects the last item of ``x``.) The resulting value must be a
512nonnegative integer less than the number of items in the sequence, and the
513subscription selects the item whose index is that value (counting from zero).
Georg Brandl116aa622007-08-15 14:28:22 +0000514
515.. index::
516 single: character
517 pair: string; item
518
519A string's items are characters. A character is not a separate data type but a
520string of exactly one character.
521
522
523.. _slicings:
524
525Slicings
526--------
527
528.. index::
529 single: slicing
530 single: slice
531
532.. index::
533 object: sequence
534 object: string
535 object: tuple
536 object: list
537
538A slicing selects a range of items in a sequence object (e.g., a string, tuple
539or list). Slicings may be used as expressions or as targets in assignment or
540:keyword:`del` statements. The syntax for a slicing:
541
542.. productionlist::
Thomas Wouters53de1902007-09-04 09:03:59 +0000543 slicing: `primary` "[" `slice_list` "]"
Georg Brandl116aa622007-08-15 14:28:22 +0000544 slice_list: `slice_item` ("," `slice_item`)* [","]
Georg Brandlcb8ecb12007-09-04 06:35:14 +0000545 slice_item: `expression` | `proper_slice`
Thomas Wouters53de1902007-09-04 09:03:59 +0000546 proper_slice: [`lower_bound`] ":" [`upper_bound`] [ ":" [`stride`] ]
Georg Brandl116aa622007-08-15 14:28:22 +0000547 lower_bound: `expression`
548 upper_bound: `expression`
549 stride: `expression`
Georg Brandl116aa622007-08-15 14:28:22 +0000550
551There is ambiguity in the formal syntax here: anything that looks like an
552expression list also looks like a slice list, so any subscription can be
553interpreted as a slicing. Rather than further complicating the syntax, this is
554disambiguated by defining that in this case the interpretation as a subscription
555takes priority over the interpretation as a slicing (this is the case if the
Thomas Wouters53de1902007-09-04 09:03:59 +0000556slice list contains no proper slice).
Georg Brandl116aa622007-08-15 14:28:22 +0000557
558.. index::
559 single: start (slice object attribute)
560 single: stop (slice object attribute)
561 single: step (slice object attribute)
562
Thomas Wouters53de1902007-09-04 09:03:59 +0000563The semantics for a slicing are as follows. The primary must evaluate to a
Georg Brandl96593ed2007-09-07 14:15:41 +0000564mapping object, and it is indexed (using the same :meth:`__getitem__` method as
565normal subscription) with a key that is constructed from the slice list, as
566follows. If the slice list contains at least one comma, the key is a tuple
567containing the conversion of the slice items; otherwise, the conversion of the
568lone slice item is the key. The conversion of a slice item that is an
569expression is that expression. The conversion of a proper slice is a slice
570object (see section :ref:`types`) whose :attr:`start`, :attr:`stop` and
571:attr:`step` attributes are the values of the expressions given as lower bound,
572upper bound and stride, respectively, substituting ``None`` for missing
573expressions.
Georg Brandl116aa622007-08-15 14:28:22 +0000574
575
576.. _calls:
577
578Calls
579-----
580
581.. index:: single: call
582
583.. index:: object: callable
584
585A call calls a callable object (e.g., a function) with a possibly empty series
586of arguments:
587
588.. productionlist::
589 call: `primary` "(" [`argument_list` [","]
590 : | `expression` `genexpr_for`] ")"
591 argument_list: `positional_arguments` ["," `keyword_arguments`]
592 : ["," "*" `expression`]
593 : ["," "**" `expression`]
594 : | `keyword_arguments` ["," "*" `expression`]
595 : ["," "**" `expression`]
596 : | "*" `expression` ["," "**" `expression`]
597 : | "**" `expression`
598 positional_arguments: `expression` ("," `expression`)*
599 keyword_arguments: `keyword_item` ("," `keyword_item`)*
600 keyword_item: `identifier` "=" `expression`
601
602A trailing comma may be present after the positional and keyword arguments but
603does not affect the semantics.
604
605The primary must evaluate to a callable object (user-defined functions, built-in
606functions, methods of built-in objects, class objects, methods of class
Georg Brandl96593ed2007-09-07 14:15:41 +0000607instances, and all objects having a :meth:`__call__` method are callable). All
608argument expressions are evaluated before the call is attempted. Please refer
609to section :ref:`function` for the syntax of formal parameter lists.
610
611.. XXX update with kwonly args PEP
Georg Brandl116aa622007-08-15 14:28:22 +0000612
613If keyword arguments are present, they are first converted to positional
614arguments, as follows. First, a list of unfilled slots is created for the
615formal parameters. If there are N positional arguments, they are placed in the
616first N slots. Next, for each keyword argument, the identifier is used to
617determine the corresponding slot (if the identifier is the same as the first
618formal parameter name, the first slot is used, and so on). If the slot is
619already filled, a :exc:`TypeError` exception is raised. Otherwise, the value of
620the argument is placed in the slot, filling it (even if the expression is
621``None``, it fills the slot). When all arguments have been processed, the slots
622that are still unfilled are filled with the corresponding default value from the
623function definition. (Default values are calculated, once, when the function is
624defined; thus, a mutable object such as a list or dictionary used as default
625value will be shared by all calls that don't specify an argument value for the
626corresponding slot; this should usually be avoided.) If there are any unfilled
627slots for which no default value is specified, a :exc:`TypeError` exception is
628raised. Otherwise, the list of filled slots is used as the argument list for
629the call.
630
631If there are more positional arguments than there are formal parameter slots, a
632:exc:`TypeError` exception is raised, unless a formal parameter using the syntax
633``*identifier`` is present; in this case, that formal parameter receives a tuple
634containing the excess positional arguments (or an empty tuple if there were no
635excess positional arguments).
636
637If any keyword argument does not correspond to a formal parameter name, a
638:exc:`TypeError` exception is raised, unless a formal parameter using the syntax
639``**identifier`` is present; in this case, that formal parameter receives a
640dictionary containing the excess keyword arguments (using the keywords as keys
641and the argument values as corresponding values), or a (new) empty dictionary if
642there were no excess keyword arguments.
643
644If the syntax ``*expression`` appears in the function call, ``expression`` must
645evaluate to a sequence. Elements from this sequence are treated as if they were
646additional positional arguments; if there are postional arguments *x1*,...,*xN*
647, and ``expression`` evaluates to a sequence *y1*,...,*yM*, this is equivalent
648to a call with M+N positional arguments *x1*,...,*xN*,*y1*,...,*yM*.
649
650A consequence of this is that although the ``*expression`` syntax appears
651*after* any keyword arguments, it is processed *before* the keyword arguments
652(and the ``**expression`` argument, if any -- see below). So::
653
654 >>> def f(a, b):
Georg Brandl6911e3c2007-09-04 07:15:32 +0000655 ... print(a, b)
Georg Brandl116aa622007-08-15 14:28:22 +0000656 ...
657 >>> f(b=1, *(2,))
658 2 1
659 >>> f(a=1, *(2,))
660 Traceback (most recent call last):
661 File "<stdin>", line 1, in ?
662 TypeError: f() got multiple values for keyword argument 'a'
663 >>> f(1, *(2,))
664 1 2
665
666It is unusual for both keyword arguments and the ``*expression`` syntax to be
667used in the same call, so in practice this confusion does not arise.
668
669If the syntax ``**expression`` appears in the function call, ``expression`` must
670evaluate to a mapping, the contents of which are treated as additional keyword
671arguments. In the case of a keyword appearing in both ``expression`` and as an
672explicit keyword argument, a :exc:`TypeError` exception is raised.
673
674Formal parameters using the syntax ``*identifier`` or ``**identifier`` cannot be
675used as positional argument slots or as keyword argument names.
676
677A call always returns some value, possibly ``None``, unless it raises an
678exception. How this value is computed depends on the type of the callable
679object.
680
681If it is---
682
683a user-defined function:
684 .. index::
685 pair: function; call
686 triple: user-defined; function; call
687 object: user-defined function
688 object: function
689
690 The code block for the function is executed, passing it the argument list. The
691 first thing the code block will do is bind the formal parameters to the
692 arguments; this is described in section :ref:`function`. When the code block
693 executes a :keyword:`return` statement, this specifies the return value of the
694 function call.
695
696a built-in function or method:
697 .. index::
698 pair: function; call
699 pair: built-in function; call
700 pair: method; call
701 pair: built-in method; call
702 object: built-in method
703 object: built-in function
704 object: method
705 object: function
706
707 The result is up to the interpreter; see :ref:`built-in-funcs` for the
708 descriptions of built-in functions and methods.
709
710a class object:
711 .. index::
712 object: class
713 pair: class object; call
714
715 A new instance of that class is returned.
716
717a class instance method:
718 .. index::
719 object: class instance
720 object: instance
721 pair: class instance; call
722
723 The corresponding user-defined function is called, with an argument list that is
724 one longer than the argument list of the call: the instance becomes the first
725 argument.
726
727a class instance:
728 .. index::
729 pair: instance; call
730 single: __call__() (object method)
731
732 The class must define a :meth:`__call__` method; the effect is then the same as
733 if that method was called.
734
735
736.. _power:
737
738The power operator
739==================
740
741The power operator binds more tightly than unary operators on its left; it binds
742less tightly than unary operators on its right. The syntax is:
743
744.. productionlist::
745 power: `primary` ["**" `u_expr`]
746
747Thus, in an unparenthesized sequence of power and unary operators, the operators
748are evaluated from right to left (this does not constrain the evaluation order
Guido van Rossum04110fb2007-08-24 16:32:05 +0000749for the operands): ``-1**2`` results in ``-1``.
Georg Brandl116aa622007-08-15 14:28:22 +0000750
751The power operator has the same semantics as the built-in :func:`pow` function,
752when called with two arguments: it yields its left argument raised to the power
753of its right argument. The numeric arguments are first converted to a common
Georg Brandl96593ed2007-09-07 14:15:41 +0000754type, and the result is of that type.
Georg Brandl116aa622007-08-15 14:28:22 +0000755
Georg Brandl96593ed2007-09-07 14:15:41 +0000756For int operands, the result has the same type as the operands unless the second
757argument is negative; in that case, all arguments are converted to float and a
758float result is delivered. For example, ``10**2`` returns ``100``, but
759``10**-2`` returns ``0.01``.
Georg Brandl116aa622007-08-15 14:28:22 +0000760
761Raising ``0.0`` to a negative power results in a :exc:`ZeroDivisionError`.
762Raising a negative number to a fractional power results in a :exc:`ValueError`.
763
764
765.. _unary:
766
767Unary arithmetic operations
768===========================
769
770.. index::
771 triple: unary; arithmetic; operation
772 triple: unary; bit-wise; operation
773
774All unary arithmetic (and bit-wise) operations have the same priority:
775
776.. productionlist::
777 u_expr: `power` | "-" `u_expr` | "+" `u_expr` | "~" `u_expr`
778
779.. index::
780 single: negation
781 single: minus
782
783The unary ``-`` (minus) operator yields the negation of its numeric argument.
784
785.. index:: single: plus
786
787The unary ``+`` (plus) operator yields its numeric argument unchanged.
788
789.. index:: single: inversion
790
Georg Brandl96593ed2007-09-07 14:15:41 +0000791The unary ``~`` (invert) operator yields the bit-wise inversion of its integer
792argument. The bit-wise inversion of ``x`` is defined as ``-(x+1)``. It only
793applies to integral numbers.
Georg Brandl116aa622007-08-15 14:28:22 +0000794
795.. index:: exception: TypeError
796
797In all three cases, if the argument does not have the proper type, a
798:exc:`TypeError` exception is raised.
799
800
801.. _binary:
802
803Binary arithmetic operations
804============================
805
806.. index:: triple: binary; arithmetic; operation
807
808The binary arithmetic operations have the conventional priority levels. Note
809that some of these operations also apply to certain non-numeric types. Apart
810from the power operator, there are only two levels, one for multiplicative
811operators and one for additive operators:
812
813.. productionlist::
814 m_expr: `u_expr` | `m_expr` "*" `u_expr` | `m_expr` "//" `u_expr` | `m_expr` "/" `u_expr`
815 : | `m_expr` "%" `u_expr`
816 a_expr: `m_expr` | `a_expr` "+" `m_expr` | `a_expr` "-" `m_expr`
817
818.. index:: single: multiplication
819
820The ``*`` (multiplication) operator yields the product of its arguments. The
Georg Brandl96593ed2007-09-07 14:15:41 +0000821arguments must either both be numbers, or one argument must be an integer and
822the other must be a sequence. In the former case, the numbers are converted to a
823common type and then multiplied together. In the latter case, sequence
824repetition is performed; a negative repetition factor yields an empty sequence.
Georg Brandl116aa622007-08-15 14:28:22 +0000825
826.. index::
827 exception: ZeroDivisionError
828 single: division
829
830The ``/`` (division) and ``//`` (floor division) operators yield the quotient of
831their arguments. The numeric arguments are first converted to a common type.
Georg Brandl96593ed2007-09-07 14:15:41 +0000832Integer division yields a float, while floor division of integers results in an
833integer; the result is that of mathematical division with the 'floor' function
834applied to the result. Division by zero raises the :exc:`ZeroDivisionError`
835exception.
Georg Brandl116aa622007-08-15 14:28:22 +0000836
837.. index:: single: modulo
838
839The ``%`` (modulo) operator yields the remainder from the division of the first
840argument by the second. The numeric arguments are first converted to a common
841type. A zero right argument raises the :exc:`ZeroDivisionError` exception. The
842arguments may be floating point numbers, e.g., ``3.14%0.7`` equals ``0.34``
843(since ``3.14`` equals ``4*0.7 + 0.34``.) The modulo operator always yields a
844result with the same sign as its second operand (or zero); the absolute value of
845the result is strictly smaller than the absolute value of the second operand
846[#]_.
847
Georg Brandl96593ed2007-09-07 14:15:41 +0000848The floor division and modulo operators are connected by the following
849identity: ``x == (x//y)*y + (x%y)``. Floor division and modulo are also
850connected with the built-in function :func:`divmod`: ``divmod(x, y) == (x//y,
851x%y)``. [#]_.
Georg Brandl116aa622007-08-15 14:28:22 +0000852
853In addition to performing the modulo operation on numbers, the ``%`` operator is
Georg Brandl96593ed2007-09-07 14:15:41 +0000854also overloaded by string objects to perform old-style string formatting (also
855known as interpolation). The syntax for string formatting is described in the
Georg Brandl4b491312007-08-31 09:22:56 +0000856Python Library Reference, section :ref:`old-string-formatting`.
Georg Brandl116aa622007-08-15 14:28:22 +0000857
858The floor division operator, the modulo operator, and the :func:`divmod`
Georg Brandl96593ed2007-09-07 14:15:41 +0000859function are not defined for complex numbers. Instead, convert to a floating
860point number using the :func:`abs` function if appropriate.
Georg Brandl116aa622007-08-15 14:28:22 +0000861
862.. index:: single: addition
863
Georg Brandl96593ed2007-09-07 14:15:41 +0000864The ``+`` (addition) operator yields the sum of its arguments. The arguments
Georg Brandl116aa622007-08-15 14:28:22 +0000865must either both be numbers or both sequences of the same type. In the former
866case, the numbers are converted to a common type and then added together. In
867the latter case, the sequences are concatenated.
868
869.. index:: single: subtraction
870
871The ``-`` (subtraction) operator yields the difference of its arguments. The
872numeric arguments are first converted to a common type.
873
874
875.. _shifting:
876
877Shifting operations
878===================
879
880.. index:: pair: shifting; operation
881
882The shifting operations have lower priority than the arithmetic operations:
883
884.. productionlist::
885 shift_expr: `a_expr` | `shift_expr` ( "<<" | ">>" ) `a_expr`
886
Georg Brandl96593ed2007-09-07 14:15:41 +0000887These operators accept integers as arguments. They shift the first argument to
888the left or right by the number of bits given by the second argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000889
890.. index:: exception: ValueError
891
892A right shift by *n* bits is defined as division by ``pow(2,n)``. A left shift
Georg Brandl96593ed2007-09-07 14:15:41 +0000893by *n* bits is defined as multiplication with ``pow(2,n)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000894
895
896.. _bitwise:
897
898Binary bit-wise operations
899==========================
900
901.. index:: triple: binary; bit-wise; operation
902
903Each of the three bitwise operations has a different priority level:
904
905.. productionlist::
906 and_expr: `shift_expr` | `and_expr` "&" `shift_expr`
907 xor_expr: `and_expr` | `xor_expr` "^" `and_expr`
908 or_expr: `xor_expr` | `or_expr` "|" `xor_expr`
909
910.. index:: pair: bit-wise; and
911
Georg Brandl96593ed2007-09-07 14:15:41 +0000912The ``&`` operator yields the bitwise AND of its arguments, which must be
913integers.
Georg Brandl116aa622007-08-15 14:28:22 +0000914
915.. index::
916 pair: bit-wise; xor
917 pair: exclusive; or
918
919The ``^`` operator yields the bitwise XOR (exclusive OR) of its arguments, which
Georg Brandl96593ed2007-09-07 14:15:41 +0000920must be integers.
Georg Brandl116aa622007-08-15 14:28:22 +0000921
922.. index::
923 pair: bit-wise; or
924 pair: inclusive; or
925
926The ``|`` operator yields the bitwise (inclusive) OR of its arguments, which
Georg Brandl96593ed2007-09-07 14:15:41 +0000927must be integers.
Georg Brandl116aa622007-08-15 14:28:22 +0000928
929
930.. _comparisons:
931
932Comparisons
933===========
934
935.. index:: single: comparison
936
937.. index:: pair: C; language
938
939Unlike C, all comparison operations in Python have the same priority, which is
940lower than that of any arithmetic, shifting or bitwise operation. Also unlike
941C, expressions like ``a < b < c`` have the interpretation that is conventional
942in mathematics:
943
944.. productionlist::
945 comparison: `or_expr` ( `comp_operator` `or_expr` )*
946 comp_operator: "<" | ">" | "==" | ">=" | "<=" | "!="
947 : | "is" ["not"] | ["not"] "in"
948
949Comparisons yield boolean values: ``True`` or ``False``.
950
951.. index:: pair: chaining; comparisons
952
953Comparisons can be chained arbitrarily, e.g., ``x < y <= z`` is equivalent to
954``x < y and y <= z``, except that ``y`` is evaluated only once (but in both
955cases ``z`` is not evaluated at all when ``x < y`` is found to be false).
956
Guido van Rossum04110fb2007-08-24 16:32:05 +0000957Formally, if *a*, *b*, *c*, ..., *y*, *z* are expressions and *op1*, *op2*, ...,
958*opN* are comparison operators, then ``a op1 b op2 c ... y opN z`` is equivalent
959to ``a op1 b and b op2 c and ... y opN z``, except that each expression is
960evaluated at most once.
Georg Brandl116aa622007-08-15 14:28:22 +0000961
Guido van Rossum04110fb2007-08-24 16:32:05 +0000962Note that ``a op1 b op2 c`` doesn't imply any kind of comparison between *a* and
Georg Brandl116aa622007-08-15 14:28:22 +0000963*c*, so that, e.g., ``x < y > z`` is perfectly legal (though perhaps not
964pretty).
965
966The operators ``<``, ``>``, ``==``, ``>=``, ``<=``, and ``!=`` compare the
967values of two objects. The objects need not have the same type. If both are
968numbers, they are converted to a common type. Otherwise, objects of different
969types *always* compare unequal, and are ordered consistently but arbitrarily.
970You can control comparison behavior of objects of non-builtin types by defining
Georg Brandl96593ed2007-09-07 14:15:41 +0000971a :meth:`__cmp__` method or rich comparison methods like :meth:`__gt__`,
972described in section :ref:`specialnames`.
Georg Brandl116aa622007-08-15 14:28:22 +0000973
974(This unusual definition of comparison was used to simplify the definition of
975operations like sorting and the :keyword:`in` and :keyword:`not in` operators.
976In the future, the comparison rules for objects of different types are likely to
977change.)
978
979Comparison of objects of the same type depends on the type:
980
981* Numbers are compared arithmetically.
982
Georg Brandl96593ed2007-09-07 14:15:41 +0000983* Bytes objects are compared lexicographically using the numeric values of their
984 elements.
Georg Brandl4b491312007-08-31 09:22:56 +0000985
Georg Brandl116aa622007-08-15 14:28:22 +0000986* Strings are compared lexicographically using the numeric equivalents (the
Georg Brandl96593ed2007-09-07 14:15:41 +0000987 result of the built-in function :func:`ord`) of their characters. [#]_ String
988 and bytes object can't be compared!
Georg Brandl116aa622007-08-15 14:28:22 +0000989
990* Tuples and lists are compared lexicographically using comparison of
991 corresponding elements. This means that to compare equal, each element must
992 compare equal and the two sequences must be of the same type and have the same
993 length.
994
995 If not equal, the sequences are ordered the same as their first differing
996 elements. For example, ``cmp([1,2,x], [1,2,y])`` returns the same as
Georg Brandl96593ed2007-09-07 14:15:41 +0000997 ``cmp(x,y)``. If the corresponding element does not exist, the shorter
998 sequence is ordered first (for example, ``[1,2] < [1,2,3]``).
Georg Brandl116aa622007-08-15 14:28:22 +0000999
Georg Brandl96593ed2007-09-07 14:15:41 +00001000* Mappings (dictionaries) compare equal if and only if their sorted ``(key,
1001 value)`` lists compare equal. [#]_ Outcomes other than equality are resolved
Georg Brandl116aa622007-08-15 14:28:22 +00001002 consistently, but are not otherwise defined. [#]_
1003
1004* Most other objects of builtin types compare unequal unless they are the same
1005 object; the choice whether one object is considered smaller or larger than
1006 another one is made arbitrarily but consistently within one execution of a
1007 program.
1008
Georg Brandl96593ed2007-09-07 14:15:41 +00001009The operators :keyword:`in` and :keyword:`not in` test for membership. ``x in
1010s`` evaluates to true if *x* is a member of *s*, and false otherwise. ``x not
1011in s`` returns the negation of ``x in s``. All built-in sequences and set types
1012support this as well as dictionary, for which :keyword:`in` tests whether a the
1013dictionary has a given key.
Georg Brandl116aa622007-08-15 14:28:22 +00001014
1015For the list and tuple types, ``x in y`` is true if and only if there exists an
1016index *i* such that ``x == y[i]`` is true.
1017
Georg Brandl4b491312007-08-31 09:22:56 +00001018For the string and bytes types, ``x in y`` is true if and only if *x* is a
1019substring of *y*. An equivalent test is ``y.find(x) != -1``. Empty strings are
1020always considered to be a substring of any other string, so ``"" in "abc"`` will
1021return ``True``.
Georg Brandl116aa622007-08-15 14:28:22 +00001022
Georg Brandl116aa622007-08-15 14:28:22 +00001023For user-defined classes which define the :meth:`__contains__` method, ``x in
1024y`` is true if and only if ``y.__contains__(x)`` is true.
1025
1026For user-defined classes which do not define :meth:`__contains__` and do define
1027:meth:`__getitem__`, ``x in y`` is true if and only if there is a non-negative
1028integer index *i* such that ``x == y[i]``, and all lower integer indices do not
Georg Brandl96593ed2007-09-07 14:15:41 +00001029raise :exc:`IndexError` exception. (If any other exception is raised, it is as
Georg Brandl116aa622007-08-15 14:28:22 +00001030if :keyword:`in` raised that exception).
1031
1032.. index::
1033 operator: in
1034 operator: not in
1035 pair: membership; test
1036 object: sequence
1037
1038The operator :keyword:`not in` is defined to have the inverse true value of
1039:keyword:`in`.
1040
1041.. index::
1042 operator: is
1043 operator: is not
1044 pair: identity; test
1045
1046The operators :keyword:`is` and :keyword:`is not` test for object identity: ``x
1047is y`` is true if and only if *x* and *y* are the same object. ``x is not y``
1048yields the inverse truth value.
1049
1050
1051.. _booleans:
1052
1053Boolean operations
1054==================
1055
1056.. index::
1057 pair: Conditional; expression
1058 pair: Boolean; operation
1059
1060Boolean operations have the lowest priority of all Python operations:
1061
1062.. productionlist::
1063 expression: `conditional_expression` | `lambda_form`
Georg Brandl96593ed2007-09-07 14:15:41 +00001064 expression_nocond: `or_test` | `lambda_form_nocond`
Georg Brandl116aa622007-08-15 14:28:22 +00001065 conditional_expression: `or_test` ["if" `or_test` "else" `expression`]
1066 or_test: `and_test` | `or_test` "or" `and_test`
1067 and_test: `not_test` | `and_test` "and" `not_test`
1068 not_test: `comparison` | "not" `not_test`
1069
1070In the context of Boolean operations, and also when expressions are used by
1071control flow statements, the following values are interpreted as false:
1072``False``, ``None``, numeric zero of all types, and empty strings and containers
1073(including strings, tuples, lists, dictionaries, sets and frozensets). All
Georg Brandl96593ed2007-09-07 14:15:41 +00001074other values are interpreted as true. User-defined objects can customize their
1075truth value by providing a :meth:`__bool__` method.
Georg Brandl116aa622007-08-15 14:28:22 +00001076
1077.. index:: operator: not
1078
1079The operator :keyword:`not` yields ``True`` if its argument is false, ``False``
1080otherwise.
1081
1082The expression ``x if C else y`` first evaluates *C* (*not* *x*); if *C* is
1083true, *x* is evaluated and its value is returned; otherwise, *y* is evaluated
1084and its value is returned.
1085
Georg Brandl116aa622007-08-15 14:28:22 +00001086.. index:: operator: and
1087
1088The expression ``x and y`` first evaluates *x*; if *x* is false, its value is
1089returned; otherwise, *y* is evaluated and the resulting value is returned.
1090
1091.. index:: operator: or
1092
1093The expression ``x or y`` first evaluates *x*; if *x* is true, its value is
1094returned; otherwise, *y* is evaluated and the resulting value is returned.
1095
1096(Note that neither :keyword:`and` nor :keyword:`or` restrict the value and type
1097they return to ``False`` and ``True``, but rather return the last evaluated
Georg Brandl96593ed2007-09-07 14:15:41 +00001098argument. This is sometimes useful, e.g., if ``s`` is a string that should be
Georg Brandl116aa622007-08-15 14:28:22 +00001099replaced by a default value if it is empty, the expression ``s or 'foo'`` yields
1100the desired value. Because :keyword:`not` has to invent a value anyway, it does
1101not bother to return a value of the same type as its argument, so e.g., ``not
1102'foo'`` yields ``False``, not ``''``.)
1103
1104
1105.. _lambdas:
1106
1107Lambdas
1108=======
1109
1110.. index::
1111 pair: lambda; expression
1112 pair: lambda; form
1113 pair: anonymous; function
1114
1115.. productionlist::
1116 lambda_form: "lambda" [`parameter_list`]: `expression`
Georg Brandl96593ed2007-09-07 14:15:41 +00001117 lambda_form_nocond: "lambda" [`parameter_list`]: `expression_nocond`
Georg Brandl116aa622007-08-15 14:28:22 +00001118
1119Lambda forms (lambda expressions) have the same syntactic position as
1120expressions. They are a shorthand to create anonymous functions; the expression
1121``lambda arguments: expression`` yields a function object. The unnamed object
1122behaves like a function object defined with ::
1123
Georg Brandl96593ed2007-09-07 14:15:41 +00001124 def <lambda>(arguments):
Georg Brandl116aa622007-08-15 14:28:22 +00001125 return expression
1126
1127See section :ref:`function` for the syntax of parameter lists. Note that
1128functions created with lambda forms cannot contain statements or annotations.
1129
1130.. _lambda:
1131
1132
1133.. _exprlists:
1134
1135Expression lists
1136================
1137
1138.. index:: pair: expression; list
1139
1140.. productionlist::
1141 expression_list: `expression` ( "," `expression` )* [","]
1142
1143.. index:: object: tuple
1144
1145An expression list containing at least one comma yields a tuple. The length of
1146the tuple is the number of expressions in the list. The expressions are
1147evaluated from left to right.
1148
1149.. index:: pair: trailing; comma
1150
1151The trailing comma is required only to create a single tuple (a.k.a. a
1152*singleton*); it is optional in all other cases. A single expression without a
1153trailing comma doesn't create a tuple, but rather yields the value of that
1154expression. (To create an empty tuple, use an empty pair of parentheses:
1155``()``.)
1156
1157
1158.. _evalorder:
1159
1160Evaluation order
1161================
1162
1163.. index:: pair: evaluation; order
1164
Georg Brandl96593ed2007-09-07 14:15:41 +00001165Python evaluates expressions from left to right. Notice that while evaluating
1166an assignment, the right-hand side is evaluated before the left-hand side.
Georg Brandl116aa622007-08-15 14:28:22 +00001167
1168In the following lines, expressions will be evaluated in the arithmetic order of
1169their suffixes::
1170
1171 expr1, expr2, expr3, expr4
1172 (expr1, expr2, expr3, expr4)
1173 {expr1: expr2, expr3: expr4}
1174 expr1 + expr2 * (expr3 - expr4)
1175 func(expr1, expr2, *expr3, **expr4)
1176 expr3, expr4 = expr1, expr2
1177
1178
1179.. _operator-summary:
1180
1181Summary
1182=======
1183
1184.. index:: pair: operator; precedence
1185
1186The following table summarizes the operator precedences in Python, from lowest
Georg Brandl96593ed2007-09-07 14:15:41 +00001187precedence (least binding) to highest precedence (most binding). Operators in
Georg Brandl116aa622007-08-15 14:28:22 +00001188the same box have the same precedence. Unless the syntax is explicitly given,
1189operators are binary. Operators in the same box group left to right (except for
1190comparisons, including tests, which all have the same precedence and chain from
1191left to right --- see section :ref:`comparisons` --- and exponentiation, which
1192groups from right to left).
1193
1194+----------------------------------------------+-------------------------------------+
1195| Operator | Description |
1196+==============================================+=====================================+
1197| :keyword:`lambda` | Lambda expression |
1198+----------------------------------------------+-------------------------------------+
1199| :keyword:`or` | Boolean OR |
1200+----------------------------------------------+-------------------------------------+
1201| :keyword:`and` | Boolean AND |
1202+----------------------------------------------+-------------------------------------+
1203| :keyword:`not` *x* | Boolean NOT |
1204+----------------------------------------------+-------------------------------------+
1205| :keyword:`in`, :keyword:`not` :keyword:`in` | Membership tests |
1206+----------------------------------------------+-------------------------------------+
1207| :keyword:`is`, :keyword:`is not` | Identity tests |
1208+----------------------------------------------+-------------------------------------+
1209| ``<``, ``<=``, ``>``, ``>=``, ``!=``, ``==`` | Comparisons |
1210+----------------------------------------------+-------------------------------------+
1211| ``|`` | Bitwise OR |
1212+----------------------------------------------+-------------------------------------+
1213| ``^`` | Bitwise XOR |
1214+----------------------------------------------+-------------------------------------+
1215| ``&`` | Bitwise AND |
1216+----------------------------------------------+-------------------------------------+
1217| ``<<``, ``>>`` | Shifts |
1218+----------------------------------------------+-------------------------------------+
1219| ``+``, ``-`` | Addition and subtraction |
1220+----------------------------------------------+-------------------------------------+
Georg Brandl96593ed2007-09-07 14:15:41 +00001221| ``*``, ``/``, ``//``, ``%`` | Multiplication, division, remainder |
Georg Brandl116aa622007-08-15 14:28:22 +00001222+----------------------------------------------+-------------------------------------+
1223| ``+x``, ``-x`` | Positive, negative |
1224+----------------------------------------------+-------------------------------------+
1225| ``~x`` | Bitwise not |
1226+----------------------------------------------+-------------------------------------+
1227| ``**`` | Exponentiation |
1228+----------------------------------------------+-------------------------------------+
1229| ``x.attribute`` | Attribute reference |
1230+----------------------------------------------+-------------------------------------+
1231| ``x[index]`` | Subscription |
1232+----------------------------------------------+-------------------------------------+
1233| ``x[index:index]`` | Slicing |
1234+----------------------------------------------+-------------------------------------+
1235| ``f(arguments...)`` | Function call |
1236+----------------------------------------------+-------------------------------------+
Georg Brandl96593ed2007-09-07 14:15:41 +00001237| ``(expressions...)`` | Binding, tuple display, generator |
1238| | expressions |
Georg Brandl116aa622007-08-15 14:28:22 +00001239+----------------------------------------------+-------------------------------------+
1240| ``[expressions...]`` | List display |
1241+----------------------------------------------+-------------------------------------+
Georg Brandl96593ed2007-09-07 14:15:41 +00001242| ``{expressions...}`` | Dictionary or set display |
Georg Brandl116aa622007-08-15 14:28:22 +00001243+----------------------------------------------+-------------------------------------+
1244
1245.. rubric:: Footnotes
1246
Georg Brandl116aa622007-08-15 14:28:22 +00001247.. [#] While ``abs(x%y) < abs(y)`` is true mathematically, for floats it may not be
1248 true numerically due to roundoff. For example, and assuming a platform on which
1249 a Python float is an IEEE 754 double-precision number, in order that ``-1e-100 %
1250 1e100`` have the same sign as ``1e100``, the computed result is ``-1e-100 +
1251 1e100``, which is numerically exactly equal to ``1e100``. Function :func:`fmod`
1252 in the :mod:`math` module returns a result whose sign matches the sign of the
1253 first argument instead, and so returns ``-1e-100`` in this case. Which approach
1254 is more appropriate depends on the application.
1255
1256.. [#] If x is very close to an exact integer multiple of y, it's possible for
Georg Brandl96593ed2007-09-07 14:15:41 +00001257 ``x//y`` to be one larger than ``(x-x%y)//y`` due to rounding. In such
Georg Brandl116aa622007-08-15 14:28:22 +00001258 cases, Python returns the latter result, in order to preserve that
1259 ``divmod(x,y)[0] * y + x % y`` be very close to ``x``.
1260
Georg Brandl96593ed2007-09-07 14:15:41 +00001261.. [#] While comparisons between strings make sense at the byte level, they may
1262 be counter-intuitive to users. For example, the strings ``"\u00C7"`` and
1263 ``"\u0327\u0043"`` compare differently, even though they both represent the
1264 same unicode character (LATIN CAPTITAL LETTER C WITH CEDILLA).
Guido van Rossumda27fd22007-08-17 00:24:54 +00001265
Georg Brandl96593ed2007-09-07 14:15:41 +00001266.. [#] The implementation computes this efficiently, without constructing lists
1267 or sorting.
Georg Brandl116aa622007-08-15 14:28:22 +00001268
1269.. [#] Earlier versions of Python used lexicographic comparison of the sorted (key,
Georg Brandl96593ed2007-09-07 14:15:41 +00001270 value) lists, but this was very expensive for the common case of comparing
1271 for equality. An even earlier version of Python compared dictionaries by
1272 identity only, but this caused surprises because people expected to be able
1273 to test a dictionary for emptiness by comparing it to ``{}``.
Georg Brandl116aa622007-08-15 14:28:22 +00001274