| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \chapter{Expressions\label{expressions}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{expression} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | This chapter explains the meaning of the elements of expressions in | 
					
						
							|  |  |  | Python. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \strong{Syntax Notes:} In this and the following chapters, extended | 
					
						
							|  |  |  | BNF\index{BNF} notation will be used to describe syntax, not lexical | 
					
						
							|  |  |  | analysis.  When (one alternative of) a syntax rule has the form | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist}[*] | 
					
						
							|  |  |  |   \production{name}{\token{othername}} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | and no semantics are given, the semantics of this form of \code{name} | 
					
						
							|  |  |  | are the same as for \code{othername}. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{syntax} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Arithmetic conversions\label{conversions}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{arithmetic}{conversion} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | When a description of an arithmetic operator below uses the phrase | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | ``the numeric arguments are converted to a common type,'' the | 
					
						
							|  |  |  | arguments are coerced using the coercion rules listed at the end of | 
					
						
							| 
									
										
										
										
											2001-06-23 06:06:21 +00:00
										 |  |  | chapter \ref{datamodel}.  If both arguments are standard numeric | 
					
						
							|  |  |  | types, the following coercions are applied: | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{itemize} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \item	If either argument is a complex number, the other is converted | 
					
						
							|  |  |  | 	to complex; | 
					
						
							|  |  |  | \item	otherwise, if either argument is a floating point number, | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 	the other is converted to floating point; | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \item	otherwise, if either argument is a long integer, | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 	the other is converted to long integer; | 
					
						
							|  |  |  | \item	otherwise, both must be plain integers and no conversion | 
					
						
							|  |  |  | 	is necessary. | 
					
						
							|  |  |  | \end{itemize} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-24 15:36:43 +00:00
										 |  |  | Some additional rules apply for certain operators (e.g., a string left | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | argument to the `\%' operator). Extensions can define their own | 
					
						
							|  |  |  | coercions. | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \section{Atoms\label{atoms}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{atom} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | Atoms are the most basic elements of expressions.  The simplest atoms | 
					
						
							|  |  |  | are identifiers or literals.  Forms enclosed in | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | reverse quotes or in parentheses, brackets or braces are also | 
					
						
							|  |  |  | categorized syntactically as atoms.  The syntax for atoms is: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{atom} | 
					
						
							|  |  |  |              {\token{identifier} | \token{literal} | \token{enclosure}} | 
					
						
							|  |  |  |   \production{enclosure} | 
					
						
							| 
									
										
										
										
											2002-03-15 23:21:37 +00:00
										 |  |  |              {\token{parenth_form} | \token{list_display}} | 
					
						
							| 
									
										
										
										
											2004-08-15 23:28:10 +00:00
										 |  |  |   \productioncont{| \token{generator_expression | \token{dict_display}}} | 
					
						
							|  |  |  |   \productioncont{| \token{string_conversion}} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{Identifiers (Names)\label{atom-identifiers}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{name} | 
					
						
							|  |  |  | \index{identifier} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-06 03:33:32 +00:00
										 |  |  | An identifier occurring as an atom is a name.  See | 
					
						
							|  |  |  | section~\ref{naming} for documentation of naming and binding. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | When the name is bound to an object, evaluation of the atom yields | 
					
						
							|  |  |  | that object.  When a name is not bound, an attempt to evaluate it | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | raises a \exception{NameError} exception. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \exindex{NameError} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-06 03:33:32 +00:00
										 |  |  | \strong{Private name mangling:} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \indexii{name}{mangling}%
 | 
					
						
							|  |  |  | \indexii{private}{names}%
 | 
					
						
							| 
									
										
										
										
											2003-09-06 03:33:32 +00:00
										 |  |  | When an identifier that textually occurs in a class definition begins | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | with two or more underscore characters and does not end in two or more | 
					
						
							| 
									
										
										
										
											1998-11-25 17:51:15 +00:00
										 |  |  | underscores, it is considered a \dfn{private name} of that class. | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | Private names are transformed to a longer form before code is | 
					
						
							|  |  |  | generated for them.  The transformation inserts the class name in | 
					
						
							|  |  |  | front of the name, with leading underscores removed, and a single | 
					
						
							|  |  |  | underscore inserted in front of the class name.  For example, the | 
					
						
							|  |  |  | identifier \code{__spam} occurring in a class named \code{Ham} will be | 
					
						
							|  |  |  | transformed to \code{_Ham__spam}.  This transformation is independent | 
					
						
							|  |  |  | of the syntactical context in which the identifier is used.  If the | 
					
						
							|  |  |  | transformed name is extremely long (longer than 255 characters), | 
					
						
							|  |  |  | implementation defined truncation may happen.  If the class name | 
					
						
							|  |  |  | consists only of underscores, no transformation is done. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{Literals\label{atom-literals}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{literal} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | Python supports string literals and various numeric literals: | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{literal} | 
					
						
							| 
									
										
										
										
											2002-03-15 23:21:37 +00:00
										 |  |  |              {\token{stringliteral} | \token{integer} | \token{longinteger}} | 
					
						
							|  |  |  |   \productioncont{| \token{floatnumber} | \token{imagnumber}} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Evaluation of a literal yields an object of the given type (string, | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | integer, long integer, floating point number, complex number) with the | 
					
						
							|  |  |  | given value.  The value may be approximated in the case of floating | 
					
						
							|  |  |  | point and imaginary (complex) literals.  See section \ref{literals} | 
					
						
							|  |  |  | for details. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | All literals correspond to immutable data types, and hence the | 
					
						
							|  |  |  | object's identity is less important than its value.  Multiple | 
					
						
							|  |  |  | evaluations of literals with the same value (either the same | 
					
						
							|  |  |  | occurrence in the program text or a different occurrence) may obtain | 
					
						
							|  |  |  | the same object or a different object with the same value. | 
					
						
							|  |  |  | \indexiii{immutable}{data}{type} | 
					
						
							| 
									
										
										
										
											2000-04-03 04:51:13 +00:00
										 |  |  | \indexii{immutable}{object} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{Parenthesized forms\label{parenthesized}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{parenthesized form} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | A parenthesized form is an optional expression list enclosed in | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | parentheses: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{parenth_form} | 
					
						
							|  |  |  |              {"(" [\token{expression_list}] ")"} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | A parenthesized expression list yields whatever that expression list | 
					
						
							|  |  |  | yields: if the list contains at least one comma, it yields a tuple; | 
					
						
							|  |  |  | otherwise, it yields the single expression that makes up the | 
					
						
							|  |  |  | expression list. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | An empty pair of parentheses yields an empty tuple object.  Since | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | tuples are immutable, the rules for literals apply (i.e., two | 
					
						
							|  |  |  | occurrences of the empty tuple may or may not yield the same object). | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{empty}{tuple} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | Note that tuples are not formed by the parentheses, but rather by use | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | of the comma operator.  The exception is the empty tuple, for which | 
					
						
							| 
									
										
										
										
											1998-07-27 20:27:53 +00:00
										 |  |  | parentheses \emph{are} required --- allowing unparenthesized ``nothing'' | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | in expressions would cause ambiguities and allow common typos to | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | pass uncaught. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{comma} | 
					
						
							|  |  |  | \indexii{tuple}{display} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{List displays\label{lists}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{list}{display} | 
					
						
							| 
									
										
										
										
											2000-09-11 16:31:55 +00:00
										 |  |  | \indexii{list}{comprehensions} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | A list display is a possibly empty series of expressions enclosed in | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | square brackets: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							| 
									
										
										
										
											2003-06-27 17:12:43 +00:00
										 |  |  |   \production{test} | 
					
						
							|  |  |  |              {\token{and_test} ( "or" \token{and_test} )* | 
					
						
							|  |  |  |               | \token{lambda_form}} | 
					
						
							|  |  |  |   \production{testlist} | 
					
						
							|  |  |  |              {\token{test} ( "," \token{test} )* [ "," ]} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  |   \production{list_display} | 
					
						
							|  |  |  |              {"[" [\token{listmaker}] "]"} | 
					
						
							|  |  |  |   \production{listmaker} | 
					
						
							|  |  |  |              {\token{expression} ( \token{list_for} | 
					
						
							| 
									
										
										
										
											2003-04-10 21:51:29 +00:00
										 |  |  |               | ( "," \token{expression} )* [","] )} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  |   \production{list_iter} | 
					
						
							|  |  |  |              {\token{list_for} | \token{list_if}} | 
					
						
							|  |  |  |   \production{list_for} | 
					
						
							|  |  |  |              {"for" \token{expression_list} "in" \token{testlist} | 
					
						
							|  |  |  |               [\token{list_iter}]} | 
					
						
							|  |  |  |   \production{list_if} | 
					
						
							|  |  |  |              {"if" \token{test} [\token{list_iter}]} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-08-12 18:09:51 +00:00
										 |  |  | A list display yields a new list object.  Its contents are specified | 
					
						
							|  |  |  | by providing either a list of expressions or a list comprehension. | 
					
						
							| 
									
										
										
										
											2000-09-11 16:31:55 +00:00
										 |  |  | \indexii{list}{comprehensions} | 
					
						
							| 
									
										
										
										
											2000-08-12 18:09:51 +00:00
										 |  |  | When a comma-separated list of expressions is supplied, its elements are | 
					
						
							|  |  |  | evaluated from left to right and placed into the list object in that | 
					
						
							|  |  |  | order.  When a list comprehension is supplied, it consists of a | 
					
						
							| 
									
										
										
										
											2000-08-23 17:03:34 +00:00
										 |  |  | single expression followed by at least one \keyword{for} clause and zero or | 
					
						
							| 
									
										
										
										
											2001-10-01 20:22:45 +00:00
										 |  |  | more \keyword{for} or \keyword{if} clauses.  In this | 
					
						
							| 
									
										
										
										
											2000-08-12 18:09:51 +00:00
										 |  |  | case, the elements of the new list are those that would be produced | 
					
						
							| 
									
										
										
										
											2000-08-23 17:03:34 +00:00
										 |  |  | by considering each of the \keyword{for} or \keyword{if} clauses a block, | 
					
						
							| 
									
										
										
										
											2001-10-01 20:22:45 +00:00
										 |  |  | nesting from | 
					
						
							| 
									
										
										
										
											2000-08-12 18:09:51 +00:00
										 |  |  | left to right, and evaluating the expression to produce a list element | 
					
						
							| 
									
										
										
										
											2004-08-07 19:16:32 +00:00
										 |  |  | each time the innermost block is reached\footnote{In Python 2.3, a | 
					
						
							|  |  |  | list comprehension "leaks" the control variables of each | 
					
						
							|  |  |  | \samp{for} it contains into the containing scope.  However, this | 
					
						
							|  |  |  | behavior is deprecated, and relying on it will not work once this | 
					
						
							|  |  |  | bug is fixed in a future release}. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \obindex{list} | 
					
						
							|  |  |  | \indexii{empty}{list} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-08-15 23:28:10 +00:00
										 |  |  | \subsection{Generator expressions\label{genexpr}} | 
					
						
							|  |  |  | \indexii{generator}{expression} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A generator expression is a compact generator notation in parentheses: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{generator_expression} | 
					
						
							|  |  |  |              {"(" \token{test} \token{genexpr_for} ")"} | 
					
						
							|  |  |  |   \production{genexpr_for} | 
					
						
							|  |  |  |              {"for" \token{expression_list} "in" \token{test} | 
					
						
							|  |  |  |               [\token{genexpr_iter}]} | 
					
						
							|  |  |  |   \production{genexpr_iter} | 
					
						
							|  |  |  |              {\token{genexpr_for} | \token{genexpr_if}} | 
					
						
							|  |  |  |   \production{genexpr_if} | 
					
						
							|  |  |  |              {"if" \token{test} [\token{genexpr_iter}]} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A generator expression yields a new generator object. | 
					
						
							|  |  |  | \obindex{generator} | 
					
						
							|  |  |  | \obindex{generator expression} | 
					
						
							|  |  |  | It consists of a single expression followed by at least one | 
					
						
							|  |  |  | \keyword{for} clause and zero or more \keyword{for} or \keyword{if} | 
					
						
							|  |  |  | clauses.  The iterating values of the new generator are those that | 
					
						
							|  |  |  | would be produced by considering each of the \keyword{for} or | 
					
						
							|  |  |  | \keyword{if} clauses a block, nesting from left to right, and | 
					
						
							|  |  |  | evaluating the expression to yield a value that is reached the | 
					
						
							|  |  |  | innermost block for each iteration. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Variables used in the generator expression are evaluated lazily | 
					
						
							|  |  |  | when the \method{next()} method is called for generator object | 
					
						
							|  |  |  | (in the same fashion as normal generators). However, the leftmost | 
					
						
							|  |  |  | \keyword{for} clause is immediately evaluated so that error produced | 
					
						
							|  |  |  | by it can be seen before any other possible error in the code that | 
					
						
							|  |  |  | handles the generator expression. | 
					
						
							|  |  |  | Subsequent \keyword{for} clauses cannot be evaluated immediately since | 
					
						
							|  |  |  | they may depend on the previous \keyword{for} loop. | 
					
						
							|  |  |  | For example: \samp{(x*y for x in range(10) for y in bar(x))}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The parentheses can be omitted on calls with only one argument. | 
					
						
							|  |  |  | See section \ref{calls} for the detail. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{Dictionary displays\label{dict}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{dictionary}{display} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A dictionary display is a possibly empty series of key/datum pairs | 
					
						
							|  |  |  | enclosed in curly braces: | 
					
						
							|  |  |  | \index{key} | 
					
						
							|  |  |  | \index{datum} | 
					
						
							|  |  |  | \index{key/datum pair} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{dict_display} | 
					
						
							| 
									
										
										
										
											2002-03-16 06:35:54 +00:00
										 |  |  |              {"\{" [\token{key_datum_list}] "\}"} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  |   \production{key_datum_list} | 
					
						
							|  |  |  |              {\token{key_datum} ("," \token{key_datum})* [","]} | 
					
						
							|  |  |  |   \production{key_datum} | 
					
						
							|  |  |  |              {\token{expression} ":" \token{expression}} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | A dictionary display yields a new dictionary object. | 
					
						
							|  |  |  | \obindex{dictionary} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The key/datum pairs are evaluated from left to right to define the | 
					
						
							|  |  |  | entries of the dictionary: each key object is used as a key into the | 
					
						
							|  |  |  | dictionary to store the corresponding datum. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Restrictions on the types of the key values are listed earlier in | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | section \ref{types}.  (To summarize,the key type should be hashable, | 
					
						
							|  |  |  | which excludes all mutable objects.)  Clashes between duplicate keys | 
					
						
							|  |  |  | are not detected; the last datum (textually rightmost in the display) | 
					
						
							|  |  |  | stored for a given key value prevails. | 
					
						
							| 
									
										
										
										
											2000-04-03 04:51:13 +00:00
										 |  |  | \indexii{immutable}{object} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{String conversions\label{string-conversions}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{string}{conversion} | 
					
						
							|  |  |  | \indexii{reverse}{quotes} | 
					
						
							|  |  |  | \indexii{backward}{quotes} | 
					
						
							|  |  |  | \index{back-quotes} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | A string conversion is an expression list enclosed in reverse (a.k.a. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | backward) quotes: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{string_conversion} | 
					
						
							|  |  |  |              {"`" \token{expression_list} "`"} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | A string conversion evaluates the contained expression list and | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | converts the resulting object into a string according to rules | 
					
						
							|  |  |  | specific to its type. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | If the object is a string, a number, \code{None}, or a tuple, list or | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | dictionary containing only objects whose type is one of these, the | 
					
						
							|  |  |  | resulting string is a valid Python expression which can be passed to | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | the built-in function \function{eval()} to yield an expression with the | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | same value (or an approximation, if floating point numbers are | 
					
						
							|  |  |  | involved). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | (In particular, converting a string adds quotes around it and converts | 
					
						
							|  |  |  | ``funny'' characters to escape sequences that are safe to print.) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-13 15:32:34 +00:00
										 |  |  | Recursive objects (for example, lists or dictionaries that contain a | 
					
						
							|  |  |  | reference to themselves, directly or indirectly) use \samp{...} to | 
					
						
							|  |  |  | indicate a recursive reference, and the result cannot be passed to | 
					
						
							|  |  |  | \function{eval()} to get an equal value (\exception{SyntaxError} will | 
					
						
							|  |  |  | be raised instead). | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \obindex{recursive} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The built-in function \function{repr()} performs exactly the same | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | conversion in its argument as enclosing it in parentheses and reverse | 
					
						
							|  |  |  | quotes does.  The built-in function \function{str()} performs a | 
					
						
							|  |  |  | similar but more user-friendly conversion. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \bifuncindex{repr} | 
					
						
							|  |  |  | \bifuncindex{str} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Primaries\label{primaries}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{primary} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Primaries represent the most tightly bound operations of the language. | 
					
						
							|  |  |  | Their syntax is: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{primary} | 
					
						
							|  |  |  |              {\token{atom} | \token{attributeref} | 
					
						
							|  |  |  |               | \token{subscription} | \token{slicing} | \token{call}} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{Attribute references\label{attribute-references}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{attribute}{reference} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | An attribute reference is a primary followed by a period and a name: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{attributeref} | 
					
						
							|  |  |  |              {\token{primary} "." \token{identifier}} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The primary must evaluate to an object of a type that supports | 
					
						
							| 
									
										
										
										
											2001-01-14 02:57:14 +00:00
										 |  |  | attribute references, e.g., a module, list, or an instance.  This | 
					
						
							|  |  |  | object is then asked to produce the attribute whose name is the | 
					
						
							|  |  |  | identifier.  If this attribute is not available, the exception | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | \exception{AttributeError}\exindex{AttributeError} is raised. | 
					
						
							|  |  |  | Otherwise, the type and value of the object produced is determined by | 
					
						
							|  |  |  | the object.  Multiple evaluations of the same attribute reference may | 
					
						
							|  |  |  | yield different objects. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \obindex{module} | 
					
						
							|  |  |  | \obindex{list} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{Subscriptions\label{subscriptions}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{subscription} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A subscription selects an item of a sequence (string, tuple or list) | 
					
						
							|  |  |  | or mapping (dictionary) object: | 
					
						
							|  |  |  | \obindex{sequence} | 
					
						
							|  |  |  | \obindex{mapping} | 
					
						
							|  |  |  | \obindex{string} | 
					
						
							|  |  |  | \obindex{tuple} | 
					
						
							|  |  |  | \obindex{list} | 
					
						
							|  |  |  | \obindex{dictionary} | 
					
						
							|  |  |  | \indexii{sequence}{item} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{subscription} | 
					
						
							|  |  |  |              {\token{primary} "[" \token{expression_list} "]"} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The primary must evaluate to an object of a sequence or mapping type. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | If the primary is a mapping, the expression list must evaluate to an | 
					
						
							|  |  |  | object whose value is one of the keys of the mapping, and the | 
					
						
							|  |  |  | subscription selects the value in the mapping that corresponds to that | 
					
						
							|  |  |  | key.  (The expression list is a tuple except if it has exactly one | 
					
						
							|  |  |  | item.) | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | If the primary is a sequence, the expression (list) must evaluate to a | 
					
						
							|  |  |  | plain integer.  If this value is negative, the length of the sequence | 
					
						
							|  |  |  | is added to it (so that, e.g., \code{x[-1]} selects the last item of | 
					
						
							|  |  |  | \code{x}.)  The resulting value must be a nonnegative integer less | 
					
						
							|  |  |  | than the number of items in the sequence, and the subscription selects | 
					
						
							|  |  |  | the item whose index is that value (counting from zero). | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | A string's items are characters.  A character is not a separate data | 
					
						
							|  |  |  | type but a string of exactly one character. | 
					
						
							|  |  |  | \index{character} | 
					
						
							|  |  |  | \indexii{string}{item} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{Slicings\label{slicings}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{slicing} | 
					
						
							|  |  |  | \index{slice} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | A slicing selects a range of items in a sequence object (e.g., a | 
					
						
							|  |  |  | string, tuple or list).  Slicings may be used as expressions or as | 
					
						
							|  |  |  | targets in assignment or del statements.  The syntax for a slicing: | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \obindex{sequence} | 
					
						
							|  |  |  | \obindex{string} | 
					
						
							|  |  |  | \obindex{tuple} | 
					
						
							|  |  |  | \obindex{list} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{slicing} | 
					
						
							|  |  |  |              {\token{simple_slicing} | \token{extended_slicing}} | 
					
						
							|  |  |  |   \production{simple_slicing} | 
					
						
							|  |  |  |              {\token{primary} "[" \token{short_slice} "]"} | 
					
						
							|  |  |  |   \production{extended_slicing} | 
					
						
							|  |  |  |              {\token{primary} "[" \token{slice_list} "]" } | 
					
						
							|  |  |  |   \production{slice_list} | 
					
						
							|  |  |  |              {\token{slice_item} ("," \token{slice_item})* [","]} | 
					
						
							|  |  |  |   \production{slice_item} | 
					
						
							|  |  |  |              {\token{expression} | \token{proper_slice} | \token{ellipsis}} | 
					
						
							|  |  |  |   \production{proper_slice} | 
					
						
							|  |  |  |              {\token{short_slice} | \token{long_slice}} | 
					
						
							|  |  |  |   \production{short_slice} | 
					
						
							|  |  |  |              {[\token{lower_bound}] ":" [\token{upper_bound}]} | 
					
						
							|  |  |  |   \production{long_slice} | 
					
						
							|  |  |  |              {\token{short_slice} ":" [\token{stride}]} | 
					
						
							|  |  |  |   \production{lower_bound} | 
					
						
							|  |  |  |              {\token{expression}} | 
					
						
							|  |  |  |   \production{upper_bound} | 
					
						
							|  |  |  |              {\token{expression}} | 
					
						
							|  |  |  |   \production{stride} | 
					
						
							|  |  |  |              {\token{expression}} | 
					
						
							|  |  |  |   \production{ellipsis} | 
					
						
							|  |  |  |              {"..."} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | There is ambiguity in the formal syntax here: anything that looks like | 
					
						
							|  |  |  | an expression list also looks like a slice list, so any subscription | 
					
						
							|  |  |  | can be interpreted as a slicing.  Rather than further complicating the | 
					
						
							|  |  |  | syntax, this is disambiguated by defining that in this case the | 
					
						
							|  |  |  | interpretation as a subscription takes priority over the | 
					
						
							|  |  |  | interpretation as a slicing (this is the case if the slice list | 
					
						
							|  |  |  | contains no proper slice nor ellipses).  Similarly, when the slice | 
					
						
							|  |  |  | list has exactly one short slice and no trailing comma, the | 
					
						
							|  |  |  | interpretation as a simple slicing takes priority over that as an | 
					
						
							|  |  |  | extended slicing.\indexii{extended}{slicing} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The semantics for a simple slicing are as follows.  The primary must | 
					
						
							|  |  |  | evaluate to a sequence object.  The lower and upper bound expressions, | 
					
						
							|  |  |  | if present, must evaluate to plain integers; defaults are zero and the | 
					
						
							| 
									
										
										
										
											2000-04-03 04:51:13 +00:00
										 |  |  | \code{sys.maxint}, respectively.  If either bound is negative, the | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | sequence's length is added to it.  The slicing now selects all items | 
					
						
							|  |  |  | with index \var{k} such that | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \code{\var{i} <= \var{k} < \var{j}} where \var{i} | 
					
						
							|  |  |  | and \var{j} are the specified lower and upper bounds.  This may be an | 
					
						
							|  |  |  | empty sequence.  It is not an error if \var{i} or \var{j} lie outside the | 
					
						
							|  |  |  | range of valid indexes (such items don't exist so they aren't | 
					
						
							|  |  |  | selected). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | The semantics for an extended slicing are as follows.  The primary | 
					
						
							|  |  |  | must evaluate to a mapping object, and it is indexed with a key that | 
					
						
							|  |  |  | is constructed from the slice list, as follows.  If the slice list | 
					
						
							|  |  |  | contains at least one comma, the key is a tuple containing the | 
					
						
							|  |  |  | conversion of the slice items; otherwise, the conversion of the lone | 
					
						
							|  |  |  | slice item is the key.  The conversion of a slice item that is an | 
					
						
							|  |  |  | expression is that expression.  The conversion of an ellipsis slice | 
					
						
							|  |  |  | item is the built-in \code{Ellipsis} object.  The conversion of a | 
					
						
							|  |  |  | proper slice is a slice object (see section \ref{types}) whose | 
					
						
							| 
									
										
										
										
											1998-11-25 17:51:15 +00:00
										 |  |  | \member{start}, \member{stop} and \member{step} attributes are the | 
					
						
							|  |  |  | values of the expressions given as lower bound, upper bound and | 
					
						
							|  |  |  | stride, respectively, substituting \code{None} for missing | 
					
						
							|  |  |  | expressions. | 
					
						
							| 
									
										
										
										
											1999-02-12 20:40:09 +00:00
										 |  |  | \withsubitem{(slice object attribute)}{\ttindex{start} | 
					
						
							|  |  |  |   \ttindex{stop}\ttindex{step}} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{Calls\label{calls}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{call} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-24 15:36:43 +00:00
										 |  |  | A call calls a callable object (e.g., a function) with a possibly empty | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | series of arguments: | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \obindex{callable} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{call} | 
					
						
							|  |  |  |              {\token{primary} "(" [\token{argument_list} [","]] ")"} | 
					
						
							| 
									
										
										
										
											2004-08-15 23:28:10 +00:00
										 |  |  |              {\token{primary} "(" [\token{argument_list} [","] | | 
					
						
							|  |  |  | 	      \token{test} \token{genexpr_for} ] ")"}                                                    | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  |   \production{argument_list} | 
					
						
							| 
									
										
										
										
											2002-10-07 16:28:38 +00:00
										 |  |  |              {\token{positional_arguments} ["," \token{keyword_arguments}]} | 
					
						
							|  |  |  |   \productioncont{                     ["," "*" \token{expression}]} | 
					
						
							|  |  |  |   \productioncont{                     ["," "**" \token{expression}]} | 
					
						
							|  |  |  |   \productioncont{| \token{keyword_arguments} ["," "*" \token{expression}]} | 
					
						
							|  |  |  |   \productioncont{                    ["," "**" \token{expression}]} | 
					
						
							| 
									
										
										
										
											2002-03-15 23:21:37 +00:00
										 |  |  |   \productioncont{| "*" \token{expression} ["," "**" \token{expression}]} | 
					
						
							|  |  |  |   \productioncont{| "**" \token{expression}} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  |   \production{positional_arguments} | 
					
						
							|  |  |  |              {\token{expression} ("," \token{expression})*} | 
					
						
							|  |  |  |   \production{keyword_arguments} | 
					
						
							|  |  |  |              {\token{keyword_item} ("," \token{keyword_item})*} | 
					
						
							|  |  |  |   \production{keyword_item} | 
					
						
							|  |  |  |              {\token{identifier} "=" \token{expression}} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | A trailing comma may be present after an argument list but does not | 
					
						
							|  |  |  | affect the semantics. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | The primary must evaluate to a callable object (user-defined | 
					
						
							|  |  |  | functions, built-in functions, methods of built-in objects, class | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | objects, methods of class instances, and certain class instances | 
					
						
							|  |  |  | themselves are callable; extensions may define additional callable | 
					
						
							|  |  |  | object types).  All argument expressions are evaluated before the call | 
					
						
							|  |  |  | is attempted.  Please refer to section \ref{function} for the syntax | 
					
						
							|  |  |  | of formal parameter lists. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If keyword arguments are present, they are first converted to | 
					
						
							|  |  |  | positional arguments, as follows.  First, a list of unfilled slots is | 
					
						
							|  |  |  | created for the formal parameters.  If there are N positional | 
					
						
							|  |  |  | arguments, they are placed in the first N slots.  Next, for each | 
					
						
							|  |  |  | keyword argument, the identifier is used to determine the | 
					
						
							|  |  |  | corresponding slot (if the identifier is the same as the first formal | 
					
						
							|  |  |  | parameter name, the first slot is used, and so on).  If the slot is | 
					
						
							|  |  |  | already filled, a \exception{TypeError} exception is raised. | 
					
						
							|  |  |  | Otherwise, the value of the argument is placed in the slot, filling it | 
					
						
							|  |  |  | (even if the expression is \code{None}, it fills the slot).  When all | 
					
						
							|  |  |  | arguments have been processed, the slots that are still unfilled are | 
					
						
							|  |  |  | filled with the corresponding default value from the function | 
					
						
							|  |  |  | definition.  (Default values are calculated, once, when the function | 
					
						
							|  |  |  | is defined; thus, a mutable object such as a list or dictionary used | 
					
						
							|  |  |  | as default value will be shared by all calls that don't specify an | 
					
						
							|  |  |  | argument value for the corresponding slot; this should usually be | 
					
						
							|  |  |  | avoided.)  If there are any unfilled slots for which no default value | 
					
						
							|  |  |  | is specified, a \exception{TypeError} exception is raised.  Otherwise, | 
					
						
							|  |  |  | the list of filled slots is used as the argument list for the call. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If there are more positional arguments than there are formal parameter | 
					
						
							|  |  |  | slots, a \exception{TypeError} exception is raised, unless a formal | 
					
						
							| 
									
										
										
										
											1998-11-25 17:51:15 +00:00
										 |  |  | parameter using the syntax \samp{*identifier} is present; in this | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | case, that formal parameter receives a tuple containing the excess | 
					
						
							|  |  |  | positional arguments (or an empty tuple if there were no excess | 
					
						
							|  |  |  | positional arguments). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If any keyword argument does not correspond to a formal parameter | 
					
						
							|  |  |  | name, a \exception{TypeError} exception is raised, unless a formal | 
					
						
							| 
									
										
										
										
											1998-11-25 17:51:15 +00:00
										 |  |  | parameter using the syntax \samp{**identifier} is present; in this | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | case, that formal parameter receives a dictionary containing the | 
					
						
							|  |  |  | excess keyword arguments (using the keywords as keys and the argument | 
					
						
							|  |  |  | values as corresponding values), or a (new) empty dictionary if there | 
					
						
							|  |  |  | were no excess keyword arguments. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-12 11:56:33 +00:00
										 |  |  | If the syntax \samp{*expression} appears in the function call, | 
					
						
							|  |  |  | \samp{expression} must evaluate to a sequence.  Elements from this | 
					
						
							|  |  |  | sequence are treated as if they were additional positional arguments; | 
					
						
							|  |  |  | if there are postional arguments \var{x1},...,\var{xN} , and | 
					
						
							|  |  |  | \samp{expression} evaluates to a sequence \var{y1},...,\var{yM}, this | 
					
						
							|  |  |  | is equivalent to a call with M+N positional arguments | 
					
						
							|  |  |  | \var{x1},...,\var{xN},\var{y1},...,\var{yM}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A consequence of this is that although the \samp{*expression} syntax | 
					
						
							|  |  |  | appears \emph{after} any keyword arguments, it is processed | 
					
						
							| 
									
										
										
										
											2001-12-14 16:57:31 +00:00
										 |  |  | \emph{before} the keyword arguments (and the | 
					
						
							|  |  |  | \samp{**expression} argument, if any -- see below).  So: | 
					
						
							| 
									
										
										
										
											2001-12-12 11:56:33 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | >>> def f(a, b): | 
					
						
							|  |  |  | ...  print a, b | 
					
						
							|  |  |  | ... | 
					
						
							|  |  |  | >>> f(b=1, *(2,)) | 
					
						
							|  |  |  | 2 1 | 
					
						
							|  |  |  | >>> f(a=1, *(2,)) | 
					
						
							|  |  |  | Traceback (most recent call last): | 
					
						
							|  |  |  |   File "<stdin>", line 1, in ? | 
					
						
							|  |  |  | TypeError: f() got multiple values for keyword argument 'a' | 
					
						
							|  |  |  | >>> f(1, *(2,)) | 
					
						
							|  |  |  | 1 2 | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-12-14 16:57:31 +00:00
										 |  |  | It is unusual for both keyword arguments and the | 
					
						
							|  |  |  | \samp{*expression} syntax to be used in the same call, so in practice | 
					
						
							|  |  |  | this confusion does not arise. | 
					
						
							| 
									
										
										
										
											2001-12-12 11:56:33 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | If the syntax \samp{**expression} appears in the function call, | 
					
						
							|  |  |  | \samp{expression} must evaluate to a (subclass of) dictionary, the | 
					
						
							|  |  |  | contents of which are treated as additional keyword arguments.  In the | 
					
						
							|  |  |  | case of a keyword appearing in both \samp{expression} and as an | 
					
						
							|  |  |  | explicit keyword argument, a \exception{TypeError} exception is | 
					
						
							|  |  |  | raised. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-11-25 17:51:15 +00:00
										 |  |  | Formal parameters using the syntax \samp{*identifier} or | 
					
						
							|  |  |  | \samp{**identifier} cannot be used as positional argument slots or | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | as keyword argument names.  Formal parameters using the syntax | 
					
						
							| 
									
										
										
										
											1998-11-25 17:51:15 +00:00
										 |  |  | \samp{(sublist)} cannot be used as keyword argument names; the | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | outermost sublist corresponds to a single unnamed argument slot, and | 
					
						
							|  |  |  | the argument value is assigned to the sublist using the usual tuple | 
					
						
							|  |  |  | assignment rules after all other parameter processing is done. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | A call always returns some value, possibly \code{None}, unless it | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | raises an exception.  How this value is computed depends on the type | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | of the callable object. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If it is--- | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{description} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \item[a user-defined function:] The code block for the function is | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | executed, passing it the argument list.  The first thing the code | 
					
						
							|  |  |  | block will do is bind the formal parameters to the arguments; this is | 
					
						
							|  |  |  | described in section \ref{function}.  When the code block executes a | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | \keyword{return} statement, this specifies the return value of the | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | function call. | 
					
						
							|  |  |  | \indexii{function}{call} | 
					
						
							|  |  |  | \indexiii{user-defined}{function}{call} | 
					
						
							|  |  |  | \obindex{user-defined function} | 
					
						
							|  |  |  | \obindex{function} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \item[a built-in function or method:] The result is up to the | 
					
						
							| 
									
										
										
										
											2000-07-31 20:08:23 +00:00
										 |  |  | interpreter; see the \citetitle[../lib/built-in-funcs.html]{Python | 
					
						
							|  |  |  | Library Reference} for the descriptions of built-in functions and | 
					
						
							|  |  |  | methods. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{function}{call} | 
					
						
							|  |  |  | \indexii{built-in function}{call} | 
					
						
							|  |  |  | \indexii{method}{call} | 
					
						
							|  |  |  | \indexii{built-in method}{call} | 
					
						
							|  |  |  | \obindex{built-in method} | 
					
						
							|  |  |  | \obindex{built-in function} | 
					
						
							|  |  |  | \obindex{method} | 
					
						
							|  |  |  | \obindex{function} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \item[a class object:] A new instance of that class is returned. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \obindex{class} | 
					
						
							|  |  |  | \indexii{class object}{call} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \item[a class instance method:] The corresponding user-defined | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | function is called, with an argument list that is one longer than the | 
					
						
							|  |  |  | argument list of the call: the instance becomes the first argument. | 
					
						
							|  |  |  | \obindex{class instance} | 
					
						
							|  |  |  | \obindex{instance} | 
					
						
							|  |  |  | \indexii{class instance}{call} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \item[a class instance:] The class must define a \method{__call__()} | 
					
						
							|  |  |  | method; the effect is then the same as if that method was called. | 
					
						
							|  |  |  | \indexii{instance}{call} | 
					
						
							| 
									
										
										
										
											1998-11-25 17:51:15 +00:00
										 |  |  | \withsubitem{(object method)}{\ttindex{__call__()}} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{description} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{The power operator\label{power}} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The power operator binds more tightly than unary operators on its | 
					
						
							|  |  |  | left; it binds less tightly than unary operators on its right.  The | 
					
						
							|  |  |  | syntax is: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{power} | 
					
						
							|  |  |  |              {\token{primary} ["**" \token{u_expr}]} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Thus, in an unparenthesized sequence of power and unary operators, the | 
					
						
							|  |  |  | operators are evaluated from right to left (this does not constrain | 
					
						
							|  |  |  | the evaluation order for the operands). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The power operator has the same semantics as the built-in | 
					
						
							|  |  |  | \function{pow()} function, when called with two arguments: it yields | 
					
						
							|  |  |  | its left argument raised to the power of its right argument.  The | 
					
						
							|  |  |  | numeric arguments are first converted to a common type.  The result | 
					
						
							| 
									
										
										
										
											2002-11-08 05:30:23 +00:00
										 |  |  | type is that of the arguments after coercion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | With mixed operand types, the coercion rules for binary arithmetic | 
					
						
							|  |  |  | operators apply. For int and long int operands, the result has the | 
					
						
							|  |  |  | same type as the operands (after coercion) unless the second argument | 
					
						
							|  |  |  | is negative; in that case, all arguments are converted to float and a | 
					
						
							|  |  |  | float result is delivered. For example, \code{10**2} returns \code{100}, | 
					
						
							|  |  |  | but \code{10**-2} returns \code{0.01}. (This last feature was added in | 
					
						
							|  |  |  | Python 2.2. In Python 2.1 and before, if both arguments were of integer | 
					
						
							|  |  |  | types and the second argument was negative, an exception was raised). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Raising \code{0.0} to a negative power results in a | 
					
						
							|  |  |  | \exception{ZeroDivisionError}.  Raising a negative number to a | 
					
						
							|  |  |  | fractional power results in a \exception{ValueError}. | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-03 04:51:13 +00:00
										 |  |  | \section{Unary arithmetic operations \label{unary}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexiii{unary}{arithmetic}{operation} | 
					
						
							|  |  |  | \indexiii{unary}{bit-wise}{operation} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | All unary arithmetic (and bit-wise) operations have the same priority: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{u_expr} | 
					
						
							|  |  |  |              {\token{power} | "-" \token{u_expr} | 
					
						
							| 
									
										
										
										
											2002-03-18 16:47:14 +00:00
										 |  |  |               | "+" \token{u_expr} | "{\~}" \token{u_expr}} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The unary \code{-} (minus) operator yields the negation of its | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | numeric argument. | 
					
						
							|  |  |  | \index{negation} | 
					
						
							|  |  |  | \index{minus} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The unary \code{+} (plus) operator yields its numeric argument | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | unchanged. | 
					
						
							|  |  |  | \index{plus} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-03 04:51:13 +00:00
										 |  |  | The unary \code{\~} (invert) operator yields the bit-wise inversion | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | of its plain or long integer argument.  The bit-wise inversion of | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \code{x} is defined as \code{-(x+1)}.  It only applies to integral | 
					
						
							|  |  |  | numbers. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{inversion} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In all three cases, if the argument does not have the proper type, | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | a \exception{TypeError} exception is raised. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \exindex{TypeError} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Binary arithmetic operations\label{binary}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexiii{binary}{arithmetic}{operation} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The binary arithmetic operations have the conventional priority | 
					
						
							|  |  |  | levels.  Note that some of these operations also apply to certain | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | non-numeric types.  Apart from the power operator, there are only two | 
					
						
							|  |  |  | levels, one for multiplicative operators and one for additive | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | operators: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{m_expr} | 
					
						
							|  |  |  |              {\token{u_expr} | \token{m_expr} "*" \token{u_expr} | 
					
						
							| 
									
										
										
										
											2002-04-30 02:18:51 +00:00
										 |  |  |               | \token{m_expr} "//" \token{u_expr} | 
					
						
							| 
									
										
										
										
											2002-03-15 23:21:37 +00:00
										 |  |  |               | \token{m_expr} "/" \token{u_expr}} | 
					
						
							|  |  |  |   \productioncont{| \token{m_expr} "\%" \token{u_expr}} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  |   \production{a_expr} | 
					
						
							| 
									
										
										
										
											2002-04-30 02:18:51 +00:00
										 |  |  |              {\token{m_expr} | \token{a_expr} "+" \token{m_expr} | 
					
						
							|  |  |  |               | \token{a_expr} "-" \token{m_expr}} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The \code{*} (multiplication) operator yields the product of its | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | arguments.  The arguments must either both be numbers, or one argument | 
					
						
							| 
									
										
										
										
											2000-12-07 04:54:02 +00:00
										 |  |  | must be an integer (plain or long) and the other must be a sequence. | 
					
						
							|  |  |  | In the former case, the numbers are converted to a common type and | 
					
						
							|  |  |  | then multiplied together.  In the latter case, sequence repetition is | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | performed; a negative repetition factor yields an empty sequence. | 
					
						
							|  |  |  | \index{multiplication} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-04-30 02:18:51 +00:00
										 |  |  | The \code{/} (division) and \code{//} (floor division) operators yield | 
					
						
							|  |  |  | the quotient of their arguments.  The numeric arguments are first | 
					
						
							|  |  |  | converted to a common type.  Plain or long integer division yields an | 
					
						
							|  |  |  | integer of the same type; the result is that of mathematical division | 
					
						
							|  |  |  | with the `floor' function applied to the result.  Division by zero | 
					
						
							|  |  |  | raises the | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | \exception{ZeroDivisionError} exception. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \exindex{ZeroDivisionError} | 
					
						
							|  |  |  | \index{division} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The \code{\%} (modulo) operator yields the remainder from the | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | division of the first argument by the second.  The numeric arguments | 
					
						
							|  |  |  | are first converted to a common type.  A zero right argument raises | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | the \exception{ZeroDivisionError} exception.  The arguments may be floating | 
					
						
							| 
									
										
										
										
											1998-07-24 15:36:43 +00:00
										 |  |  | point numbers, e.g., \code{3.14\%0.7} equals \code{0.34} (since | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \code{3.14} equals \code{4*0.7 + 0.34}.)  The modulo operator always | 
					
						
							|  |  |  | yields a result with the same sign as its second operand (or zero); | 
					
						
							| 
									
										
										
										
											2002-11-24 20:23:04 +00:00
										 |  |  | the absolute value of the result is strictly smaller than the absolute | 
					
						
							|  |  |  | value of the second operand\footnote{ | 
					
						
							| 
									
										
										
										
											2002-11-26 18:14:35 +00:00
										 |  |  |     While \code{abs(x\%y) < abs(y)} is true mathematically, for | 
					
						
							| 
									
										
										
										
											2002-11-24 20:23:04 +00:00
										 |  |  |     floats it may not be true numerically due to roundoff.  For | 
					
						
							|  |  |  |     example, and assuming a platform on which a Python float is an | 
					
						
							|  |  |  |     IEEE 754 double-precision number, in order that \code{-1e-100 \% 1e100} | 
					
						
							|  |  |  |     have the same sign as \code{1e100}, the computed result is | 
					
						
							|  |  |  |     \code{-1e-100 + 1e100}, which is numerically exactly equal | 
					
						
							|  |  |  |     to \code{1e100}.  Function \function{fmod()} in the \module{math} | 
					
						
							|  |  |  |     module returns a result whose sign matches the sign of the | 
					
						
							|  |  |  |     first argument instead, and so returns \code{-1e-100} in this case. | 
					
						
							|  |  |  |     Which approach is more appropriate depends on the application. | 
					
						
							|  |  |  | }. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{modulo} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The integer division and modulo operators are connected by the | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | following identity: \code{x == (x/y)*y + (x\%y)}.  Integer division and | 
					
						
							|  |  |  | modulo are also connected with the built-in function \function{divmod()}: | 
					
						
							|  |  |  | \code{divmod(x, y) == (x/y, x\%y)}.  These identities don't hold for | 
					
						
							| 
									
										
										
										
											2002-05-21 18:19:49 +00:00
										 |  |  | floating point numbers; there similar identities hold | 
					
						
							| 
									
										
										
										
											2003-06-26 17:41:40 +00:00
										 |  |  | approximately where \code{x/y} is replaced by \code{floor(x/y)} or | 
					
						
							| 
									
										
										
										
											2002-11-24 20:23:04 +00:00
										 |  |  | \code{floor(x/y) - 1}\footnote{ | 
					
						
							| 
									
										
										
										
											1999-05-06 14:46:35 +00:00
										 |  |  |     If x is very close to an exact integer multiple of y, it's | 
					
						
							|  |  |  |     possible for \code{floor(x/y)} to be one larger than | 
					
						
							|  |  |  |     \code{(x-x\%y)/y} due to rounding.  In such cases, Python returns | 
					
						
							|  |  |  |     the latter result, in order to preserve that \code{divmod(x,y)[0] | 
					
						
							|  |  |  |     * y + x \%{} y} be very close to \code{x}. | 
					
						
							| 
									
										
										
										
											2002-05-21 18:19:49 +00:00
										 |  |  | }. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-11 21:08:02 +00:00
										 |  |  | \deprecated{2.3}{The floor division operator, the modulo operator, | 
					
						
							|  |  |  | and the \function{divmod()} function are no longer defined for complex | 
					
						
							|  |  |  | numbers.  Instead, convert to a floating point number using the | 
					
						
							|  |  |  | \function{abs()} function if appropriate.} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The \code{+} (addition) operator yields the sum of its arguments. | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | The arguments must either both be numbers or both sequences of the | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | same type.  In the former case, the numbers are converted to a common | 
					
						
							|  |  |  | type and then added together.  In the latter case, the sequences are | 
					
						
							|  |  |  | concatenated. | 
					
						
							|  |  |  | \index{addition} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The \code{-} (subtraction) operator yields the difference of its | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | arguments.  The numeric arguments are first converted to a common | 
					
						
							|  |  |  | type. | 
					
						
							|  |  |  | \index{subtraction} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Shifting operations\label{shifting}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{shifting}{operation} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The shifting operations have lower priority than the arithmetic | 
					
						
							|  |  |  | operations: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{shift_expr} | 
					
						
							|  |  |  |              {\token{a_expr} | 
					
						
							|  |  |  |               | \token{shift_expr} ( "<<" | ">>" ) \token{a_expr}} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | These operators accept plain or long integers as arguments.  The | 
					
						
							|  |  |  | arguments are converted to a common type.  They shift the first | 
					
						
							|  |  |  | argument to the left or right by the number of bits given by the | 
					
						
							|  |  |  | second argument. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A right shift by \var{n} bits is defined as division by | 
					
						
							|  |  |  | \code{pow(2,\var{n})}.  A left shift by \var{n} bits is defined as | 
					
						
							|  |  |  | multiplication with \code{pow(2,\var{n})}; for plain integers there is | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | no overflow check so in that case the operation drops bits and flips | 
					
						
							|  |  |  | the sign if the result is not less than \code{pow(2,31)} in absolute | 
					
						
							|  |  |  | value.  Negative shift counts raise a \exception{ValueError} | 
					
						
							|  |  |  | exception. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \exindex{ValueError} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Binary bit-wise operations\label{bitwise}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexiii{binary}{bit-wise}{operation} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Each of the three bitwise operations has a different priority level: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{and_expr} | 
					
						
							|  |  |  |              {\token{shift_expr} | \token{and_expr} "\&" \token{shift_expr}} | 
					
						
							|  |  |  |   \production{xor_expr} | 
					
						
							|  |  |  |              {\token{and_expr} | \token{xor_expr} "\textasciicircum" \token{and_expr}} | 
					
						
							|  |  |  |   \production{or_expr} | 
					
						
							|  |  |  |              {\token{xor_expr} | \token{or_expr} "|" \token{xor_expr}} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The \code{\&} operator yields the bitwise AND of its arguments, which | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | must be plain or long integers.  The arguments are converted to a | 
					
						
							|  |  |  | common type. | 
					
						
							|  |  |  | \indexii{bit-wise}{and} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The \code{\^} operator yields the bitwise XOR (exclusive OR) of its | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | arguments, which must be plain or long integers.  The arguments are | 
					
						
							|  |  |  | converted to a common type. | 
					
						
							|  |  |  | \indexii{bit-wise}{xor} | 
					
						
							|  |  |  | \indexii{exclusive}{or} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The \code{|} operator yields the bitwise (inclusive) OR of its | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | arguments, which must be plain or long integers.  The arguments are | 
					
						
							|  |  |  | converted to a common type. | 
					
						
							|  |  |  | \indexii{bit-wise}{or} | 
					
						
							|  |  |  | \indexii{inclusive}{or} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Comparisons\label{comparisons}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{comparison} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-19 18:10:05 +00:00
										 |  |  | Unlike C, all comparison operations in Python have the same priority, | 
					
						
							|  |  |  | which is lower than that of any arithmetic, shifting or bitwise | 
					
						
							|  |  |  | operation.  Also unlike C, expressions like \code{a < b < c} have the | 
					
						
							|  |  |  | interpretation that is conventional in mathematics: | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | \indexii{C}{language} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{comparison} | 
					
						
							|  |  |  |              {\token{or_expr} ( \token{comp_operator} \token{or_expr} )*} | 
					
						
							|  |  |  |   \production{comp_operator} | 
					
						
							| 
									
										
										
										
											2002-03-15 23:21:37 +00:00
										 |  |  |              {"<" | ">" | "==" | ">=" | "<=" | "<>" | "!="} | 
					
						
							|  |  |  |   \productioncont{| "is" ["not"] | ["not"] "in"} | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-06-06 02:52:14 +00:00
										 |  |  | Comparisons yield boolean values: \code{True} or \code{False}. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-24 15:36:43 +00:00
										 |  |  | Comparisons can be chained arbitrarily, e.g., \code{x < y <= z} is | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | equivalent to \code{x < y and y <= z}, except that \code{y} is | 
					
						
							|  |  |  | evaluated only once (but in both cases \code{z} is not evaluated at all | 
					
						
							|  |  |  | when \code{x < y} is found to be false). | 
					
						
							|  |  |  | \indexii{chaining}{comparisons} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Formally, if \var{a}, \var{b}, \var{c}, \ldots, \var{y}, \var{z} are | 
					
						
							|  |  |  | expressions and \var{opa}, \var{opb}, \ldots, \var{opy} are comparison | 
					
						
							|  |  |  | operators, then \var{a opa b opb c} \ldots \var{y opy z} is equivalent | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | to \var{a opa b} \keyword{and} \var{b opb c} \keyword{and} \ldots | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \var{y opy z}, except that each expression is evaluated at most once. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note that \var{a opa b opb c} doesn't imply any kind of comparison | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | between \var{a} and \var{c}, so that, e.g., \code{x < y > z} is | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | perfectly legal (though perhaps not pretty). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The forms \code{<>} and \code{!=} are equivalent; for consistency with | 
					
						
							|  |  |  | C, \code{!=} is preferred; where \code{!=} is mentioned below | 
					
						
							| 
									
										
										
										
											2000-09-19 18:10:05 +00:00
										 |  |  | \code{<>} is also accepted.  The \code{<>} spelling is considered | 
					
						
							|  |  |  | obsolescent. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-19 18:10:05 +00:00
										 |  |  | The operators \code{<}, \code{>}, \code{==}, \code{>=}, \code{<=}, and | 
					
						
							|  |  |  | \code{!=} compare | 
					
						
							|  |  |  | the values of two objects.  The objects need not have the same type. | 
					
						
							| 
									
										
										
										
											2002-04-09 14:39:10 +00:00
										 |  |  | If both are numbers, they are converted to a common type.  Otherwise, | 
					
						
							| 
									
										
										
										
											1998-07-27 20:27:53 +00:00
										 |  |  | objects of different types \emph{always} compare unequal, and are | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | ordered consistently but arbitrarily. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | (This unusual definition of comparison was used to simplify the | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | definition of operations like sorting and the \keyword{in} and | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \keyword{not in} operators.  In the future, the comparison rules for | 
					
						
							|  |  |  | objects of different types are likely to change.) | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Comparison of objects of the same type depends on the type: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{itemize} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | Numbers are compared arithmetically. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | Strings are compared lexicographically using the numeric equivalents | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | (the result of the built-in function \function{ord()}) of their | 
					
						
							| 
									
										
										
										
											2000-09-19 18:10:05 +00:00
										 |  |  | characters.  Unicode and 8-bit strings are fully interoperable in this | 
					
						
							|  |  |  | behavior. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | Tuples and lists are compared lexicographically using comparison of | 
					
						
							| 
									
										
										
										
											2003-06-26 17:41:40 +00:00
										 |  |  | corresponding elements.  This means that to compare equal, each | 
					
						
							|  |  |  | element must compare equal and the two sequences must be of the same | 
					
						
							|  |  |  | type and have the same length. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If not equal, the sequences are ordered the same as their first | 
					
						
							|  |  |  | differing elements.  For example, \code{cmp([1,2,x], [1,2,y])} returns | 
					
						
							|  |  |  | the same as \code{cmp(x,y)}.  If the corresponding element does not | 
					
						
							|  |  |  | exist, the shorter sequence is ordered first (for example, | 
					
						
							|  |  |  | \code{[1,2] < [1,2,3]}). | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							| 
									
										
										
										
											2001-10-01 20:22:45 +00:00
										 |  |  | Mappings (dictionaries) compare equal if and only if their sorted | 
					
						
							|  |  |  | (key, value) lists compare equal.\footnote{The implementation computes | 
					
						
							|  |  |  |    this efficiently, without constructing lists or sorting.} | 
					
						
							|  |  |  | Outcomes other than equality are resolved consistently, but are not | 
					
						
							| 
									
										
										
										
											2001-10-01 20:25:26 +00:00
										 |  |  | otherwise defined.\footnote{Earlier versions of Python used | 
					
						
							| 
									
										
										
										
											2001-10-01 20:22:45 +00:00
										 |  |  |   lexicographic comparison of the sorted (key, value) lists, but this | 
					
						
							|  |  |  |   was very expensive for the common case of comparing for equality.  An | 
					
						
							|  |  |  |   even earlier version of Python compared dictionaries by identity only, | 
					
						
							|  |  |  |   but this caused surprises because people expected to be able to test | 
					
						
							|  |  |  |   a dictionary for emptiness by comparing it to \code{\{\}}.} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | Most other types compare unequal unless they are the same object; | 
					
						
							|  |  |  | the choice whether one object is considered smaller or larger than | 
					
						
							|  |  |  | another one is made arbitrarily but consistently within one | 
					
						
							|  |  |  | execution of a program. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \end{itemize} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-07-11 19:43:47 +00:00
										 |  |  | The operators \keyword{in} and \keyword{not in} test for set | 
					
						
							| 
									
										
										
										
											2001-03-06 07:32:11 +00:00
										 |  |  | membership.  \code{\var{x} in \var{s}} evaluates to true if \var{x} | 
					
						
							|  |  |  | is a member of the set \var{s}, and false otherwise.  \code{\var{x} | 
					
						
							|  |  |  | not in \var{s}} returns the negation of \code{\var{x} in \var{s}}. | 
					
						
							|  |  |  | The set membership test has traditionally been bound to sequences; an | 
					
						
							|  |  |  | object is a member of a set if the set is a sequence and contains an | 
					
						
							|  |  |  | element equal to that object.  However, it is possible for an object | 
					
						
							| 
									
										
										
										
											2001-04-20 16:50:40 +00:00
										 |  |  | to support membership tests without being a sequence.  In particular, | 
					
						
							|  |  |  | dictionaries support memership testing as a nicer way of spelling | 
					
						
							|  |  |  | \code{\var{key} in \var{dict}}; other mapping types may follow suit. | 
					
						
							| 
									
										
										
										
											2000-07-11 19:43:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-14 02:57:14 +00:00
										 |  |  | For the list and tuple types, \code{\var{x} in \var{y}} is true if and | 
					
						
							| 
									
										
										
										
											2001-03-06 07:32:11 +00:00
										 |  |  | only if there exists an index \var{i} such that | 
					
						
							| 
									
										
										
										
											2001-01-14 02:57:14 +00:00
										 |  |  | \code{\var{x} == \var{y}[\var{i}]} is true. | 
					
						
							| 
									
										
										
										
											2000-07-11 19:43:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-09-19 18:10:05 +00:00
										 |  |  | For the Unicode and string types, \code{\var{x} in \var{y}} is true if | 
					
						
							| 
									
										
										
										
											2003-06-26 19:32:10 +00:00
										 |  |  | and only if \var{x} is a substring of \var{y}.  An equivalent test is | 
					
						
							|  |  |  | \code{y.find(x) != -1}.  Note, \var{x} and \var{y} need not be the | 
					
						
							|  |  |  | same type; consequently, \code{u'ab' in 'abc'} will return \code{True}. | 
					
						
							|  |  |  | Empty strings are always considered to be a substring of any other string, | 
					
						
							|  |  |  | so \code{"" in "abc"} will return \code{True}. | 
					
						
							|  |  |  | \versionchanged[Previously, \var{x} was required to be a string of | 
					
						
							|  |  |  | length \code{1}]{2.3} | 
					
						
							| 
									
										
										
										
											2000-07-11 19:43:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | For user-defined classes which define the \method{__contains__()} method, | 
					
						
							|  |  |  | \code{\var{x} in \var{y}} is true if and only if | 
					
						
							|  |  |  | \code{\var{y}.__contains__(\var{x})} is true. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For user-defined classes which do not define \method{__contains__()} and | 
					
						
							| 
									
										
										
										
											2000-09-19 18:10:05 +00:00
										 |  |  | do define \method{__getitem__()}, \code{\var{x} in \var{y}} is true if | 
					
						
							|  |  |  | and only if there is a non-negative integer index \var{i} such that | 
					
						
							| 
									
										
										
										
											2000-07-11 19:43:47 +00:00
										 |  |  | \code{\var{x} == \var{y}[\var{i}]}, and all lower integer indices | 
					
						
							|  |  |  | do not raise \exception{IndexError} exception. (If any other exception | 
					
						
							|  |  |  | is raised, it is as if \keyword{in} raised that exception). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The operator \keyword{not in} is defined to have the inverse true value | 
					
						
							|  |  |  | of \keyword{in}. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \opindex{in} | 
					
						
							|  |  |  | \opindex{not in} | 
					
						
							|  |  |  | \indexii{membership}{test} | 
					
						
							|  |  |  | \obindex{sequence} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The operators \keyword{is} and \keyword{is not} test for object identity: | 
					
						
							|  |  |  | \code{\var{x} is \var{y}} is true if and only if \var{x} and \var{y} | 
					
						
							|  |  |  | are the same object.  \code{\var{x} is not \var{y}} yields the inverse | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | truth value. | 
					
						
							|  |  |  | \opindex{is} | 
					
						
							|  |  |  | \opindex{is not} | 
					
						
							|  |  |  | \indexii{identity}{test} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-06-23 05:27:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Boolean operations\label{Booleans}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{Boolean}{operation} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Boolean operations have the lowest priority of all Python operations: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{expression} | 
					
						
							|  |  |  |              {\token{or_test} | \token{lambda_form}} | 
					
						
							|  |  |  |   \production{or_test} | 
					
						
							|  |  |  |              {\token{and_test} | \token{or_test} "or" \token{and_test}} | 
					
						
							|  |  |  |   \production{and_test} | 
					
						
							|  |  |  |              {\token{not_test} | \token{and_test} "and" \token{not_test}} | 
					
						
							|  |  |  |   \production{not_test} | 
					
						
							|  |  |  |              {\token{comparison} | "not" \token{not_test}} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | In the context of Boolean operations, and also when expressions are | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | used by control flow statements, the following values are interpreted | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | as false: \code{None}, numeric zero of all types, empty sequences | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | (strings, tuples and lists), and empty mappings (dictionaries).  All | 
					
						
							|  |  |  | other values are interpreted as true. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-04-23 17:11:47 +00:00
										 |  |  | The operator \keyword{not} yields \code{True} if its argument is false, | 
					
						
							|  |  |  | \code{False} otherwise. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \opindex{not} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | The expression \code{\var{x} and \var{y}} first evaluates \var{x}; if | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \var{x} is false, its value is returned; otherwise, \var{y} is | 
					
						
							|  |  |  | evaluated and the resulting value is returned. | 
					
						
							|  |  |  | \opindex{and} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | The expression \code{\var{x} or \var{y}} first evaluates \var{x}; if | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \var{x} is true, its value is returned; otherwise, \var{y} is | 
					
						
							|  |  |  | evaluated and the resulting value is returned. | 
					
						
							|  |  |  | \opindex{or} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | (Note that neither \keyword{and} nor \keyword{or} restrict the value | 
					
						
							| 
									
										
										
										
											2004-04-23 17:11:47 +00:00
										 |  |  | and type they return to \code{False} and \code{True}, but rather return the | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | last evaluated argument. | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | This is sometimes useful, e.g., if \code{s} is a string that should be | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | replaced by a default value if it is empty, the expression | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | \code{s or 'foo'} yields the desired value.  Because \keyword{not} has to | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | invent a value anyway, it does not bother to return a value of the | 
					
						
							| 
									
										
										
										
											2004-04-23 17:11:47 +00:00
										 |  |  | same type as its argument, so e.g., \code{not 'foo'} yields \code{False}, | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | not \code{''}.) | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-04-01 21:05:21 +00:00
										 |  |  | \section{Lambdas\label{lambdas}} | 
					
						
							|  |  |  | \indexii{lambda}{expression} | 
					
						
							|  |  |  | \indexii{lambda}{form} | 
					
						
							| 
									
										
										
										
											2003-10-19 07:32:24 +00:00
										 |  |  | \indexii{anonymous}{function} | 
					
						
							| 
									
										
										
										
											2002-04-01 21:05:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-02 12:54:33 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{lambda_form} | 
					
						
							|  |  |  |              {"lambda" [\token{parameter_list}]: \token{expression}} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | Lambda forms (lambda expressions) have the same syntactic position as | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | expressions.  They are a shorthand to create anonymous functions; the | 
					
						
							|  |  |  | expression \code{lambda \var{arguments}: \var{expression}} | 
					
						
							| 
									
										
										
										
											2002-04-01 21:05:21 +00:00
										 |  |  | yields a function object.  The unnamed object behaves like a function | 
					
						
							| 
									
										
										
										
											2002-06-25 04:04:14 +00:00
										 |  |  | object defined with | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | def name(arguments): | 
					
						
							|  |  |  |     return expression | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | See section \ref{function} for the syntax of parameter lists.  Note | 
					
						
							|  |  |  | that functions created with lambda forms cannot contain statements. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \label{lambda} | 
					
						
							| 
									
										
										
										
											2001-06-05 02:17:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Expression lists\label{exprlists}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{expression}{list} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-06 22:49:53 +00:00
										 |  |  | \begin{productionlist} | 
					
						
							|  |  |  |   \production{expression_list} | 
					
						
							|  |  |  |              {\token{expression} ( "," \token{expression} )* [","]} | 
					
						
							|  |  |  | \end{productionlist} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-25 21:09:10 +00:00
										 |  |  | An expression list containing at least one comma yields a | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | tuple.  The length of the tuple is the number of expressions in the | 
					
						
							|  |  |  | list.  The expressions are evaluated from left to right. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \obindex{tuple} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The trailing comma is required only to create a single tuple (a.k.a. a | 
					
						
							| 
									
										
										
										
											1998-07-27 20:27:53 +00:00
										 |  |  | \emph{singleton}); it is optional in all other cases.  A single | 
					
						
							| 
									
										
										
										
											2000-04-25 21:09:10 +00:00
										 |  |  | expression without a trailing comma doesn't create a | 
					
						
							|  |  |  | tuple, but rather yields the value of that expression. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | (To create an empty tuple, use an empty pair of parentheses: | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | \code{()}.) | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \indexii{trailing}{comma} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-16 13:54:02 +00:00
										 |  |  | \section{Evaluation order\label{evalorder}} | 
					
						
							|  |  |  | \indexii{evaluation}{order} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Python evaluates expressions from left to right. Notice that while | 
					
						
							|  |  |  | evaluating an assignment, the right-hand side is evaluated before | 
					
						
							|  |  |  | the left-hand side. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In the following lines, expressions will be evaluated in the | 
					
						
							|  |  |  | arithmetic order of their suffixes: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | expr1, expr2, expr3, expr4 | 
					
						
							|  |  |  | (expr1, expr2, expr3, expr4) | 
					
						
							|  |  |  | {expr1: expr2, expr3: expr4} | 
					
						
							|  |  |  | expr1 + expr2 * (expr3 - expr4) | 
					
						
							|  |  |  | func(expr1, expr2, *expr3, **expr4) | 
					
						
							|  |  |  | expr3, expr4 = expr1, expr2 | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							| 
									
										
										
										
											1999-04-29 16:43:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Summary\label{summary}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-29 16:43:42 +00:00
										 |  |  | The following table summarizes the operator | 
					
						
							|  |  |  | precedences\indexii{operator}{precedence} in Python, from lowest | 
					
						
							|  |  |  | precedence (least binding) to highest precedence (most binding). | 
					
						
							|  |  |  | Operators in the same box have the same precedence.  Unless the syntax | 
					
						
							|  |  |  | is explicitly given, operators are binary.  Operators in the same box | 
					
						
							| 
									
										
										
										
											2003-11-09 16:33:56 +00:00
										 |  |  | group left to right (except for comparisons, including tests, which all | 
					
						
							|  |  |  | have the same precedence and chain from left to right --- see section | 
					
						
							|  |  |  | \ref{comparisons} -- and exponentiation, which groups from right to left). | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-29 16:43:42 +00:00
										 |  |  | \begin{tableii}{c|l}{textrm}{Operator}{Description} | 
					
						
							| 
									
										
										
										
											1998-07-27 20:27:53 +00:00
										 |  |  |     \lineii{\keyword{lambda}}			{Lambda expression} | 
					
						
							|  |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\keyword{or}}			{Boolean OR} | 
					
						
							|  |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\keyword{and}}			{Boolean AND} | 
					
						
							|  |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\keyword{not} \var{x}}		{Boolean NOT} | 
					
						
							|  |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\keyword{in}, \keyword{not} \keyword{in}}{Membership tests} | 
					
						
							|  |  |  |     \lineii{\keyword{is}, \keyword{is not}}{Identity tests} | 
					
						
							|  |  |  |     \lineii{\code{<}, \code{<=}, \code{>}, \code{>=}, | 
					
						
							| 
									
										
										
										
											1998-10-21 00:44:49 +00:00
										 |  |  |             \code{<>}, \code{!=}, \code{==}} | 
					
						
							| 
									
										
										
										
											1998-07-27 20:27:53 +00:00
										 |  |  | 	   {Comparisons} | 
					
						
							|  |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\code{|}}				{Bitwise OR} | 
					
						
							|  |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\code{\^}}				{Bitwise XOR} | 
					
						
							|  |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\code{\&}}				{Bitwise AND} | 
					
						
							|  |  |  |   \hline | 
					
						
							| 
									
										
										
										
											2001-04-12 12:37:03 +00:00
										 |  |  |     \lineii{\code{<}\code{<}, \code{>}\code{>}}	{Shifts} | 
					
						
							| 
									
										
										
										
											1998-07-27 20:27:53 +00:00
										 |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\code{+}, \code{-}}{Addition and subtraction} | 
					
						
							|  |  |  |   \hline | 
					
						
							| 
									
										
										
										
											1998-10-21 00:44:49 +00:00
										 |  |  |     \lineii{\code{*}, \code{/}, \code{\%}} | 
					
						
							| 
									
										
										
										
											1998-07-27 20:27:53 +00:00
										 |  |  |            {Multiplication, division, remainder} | 
					
						
							|  |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\code{+\var{x}}, \code{-\var{x}}}	{Positive, negative} | 
					
						
							|  |  |  |     \lineii{\code{\~\var{x}}}			{Bitwise not} | 
					
						
							| 
									
										
										
										
											2001-05-09 16:51:49 +00:00
										 |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\code{**}}				{Exponentiation} | 
					
						
							| 
									
										
										
										
											1998-07-27 20:27:53 +00:00
										 |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\code{\var{x}.\var{attribute}}}	{Attribute reference} | 
					
						
							|  |  |  |     \lineii{\code{\var{x}[\var{index}]}}	{Subscription} | 
					
						
							|  |  |  |     \lineii{\code{\var{x}[\var{index}:\var{index}]}}	{Slicing} | 
					
						
							|  |  |  |     \lineii{\code{\var{f}(\var{arguments}...)}}	{Function call} | 
					
						
							| 
									
										
										
										
											1999-04-29 16:43:42 +00:00
										 |  |  |   \hline | 
					
						
							| 
									
										
										
										
											1998-07-27 20:27:53 +00:00
										 |  |  |     \lineii{\code{(\var{expressions}\ldots)}}	{Binding or tuple display} | 
					
						
							|  |  |  |     \lineii{\code{[\var{expressions}\ldots]}}	{List display} | 
					
						
							|  |  |  |     \lineii{\code{\{\var{key}:\var{datum}\ldots\}}}{Dictionary display} | 
					
						
							|  |  |  |     \lineii{\code{`\var{expressions}\ldots`}}	{String conversion} | 
					
						
							|  |  |  | \end{tableii} |