| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | name:           othername | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | chapter 3.  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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | atom:      identifier | literal | enclosure | 
					
						
							|  |  |  | enclosure: parenth_form|list_display|dict_display|string_conversion | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | An identifier occurring as an atom is a reference to a local, global | 
					
						
							|  |  |  | or built-in name binding.  If a name is assigned to anywhere in a code | 
					
						
							|  |  |  | block (even in unreachable code), and is not mentioned in a | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | \keyword{global} statement in that code block, then it refers to a local | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | name throughout that code block.  When it is not assigned to anywhere | 
					
						
							|  |  |  | in the block, or when it is assigned to but also explicitly listed in | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | a \keyword{global} statement, it refers to a global name if one exists, | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | else to a built-in name (and this binding may dynamically change). | 
					
						
							|  |  |  | \indexii{name}{binding} | 
					
						
							|  |  |  | \index{code block} | 
					
						
							|  |  |  | \stindex{global} | 
					
						
							|  |  |  | \indexii{built-in}{name} | 
					
						
							|  |  |  | \indexii{global}{name} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \strong{Private name mangling:}%
 | 
					
						
							|  |  |  | \indexii{name}{mangling}%
 | 
					
						
							|  |  |  | \indexii{private}{names}%
 | 
					
						
							|  |  |  | when an identifier that textually occurs in a class definition begins | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | literal: stringliteral | integer | longinteger | floatnumber | imagnumber | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \indexii{immutable}{objects} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | parenth_form:      "(" [expression_list] ")" | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \subsection{List displays\label{lists}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{list}{display} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | list_display:   "[" [expression_list] "]" | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | A list display yields a new list object.  If it has no expression | 
					
						
							|  |  |  | list, the list object has no items.  Otherwise, the elements of the | 
					
						
							|  |  |  | expression list are evaluated from left to right and inserted in the | 
					
						
							|  |  |  | list object in that order. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \obindex{list} | 
					
						
							|  |  |  | \indexii{empty}{list} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | dict_display:   "{" [key_datum_list] "}" | 
					
						
							|  |  |  | key_datum_list: key_datum ("," key_datum)* [","] | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | key_datum:      expression ":" expression | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | \indexii{immutable}{objects} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | string_conversion: "`" expression_list "`" | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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.) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-24 15:36:43 +00:00
										 |  |  | It is illegal to attempt to convert recursive objects (e.g., lists or | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | dictionaries that contain a reference to themselves, directly or | 
					
						
							|  |  |  | indirectly.) | 
					
						
							|  |  |  | \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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | primary:        atom | attributeref | subscription | slicing | call | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | attributeref:   primary "." identifier | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The primary must evaluate to an object of a type that supports | 
					
						
							| 
									
										
										
										
											1998-07-24 15:36:43 +00:00
										 |  |  | attribute references, e.g., a module or a list.  This object is then | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | asked to produce the attribute whose name is the identifier.  If this | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | attribute is not available, the exception | 
					
						
							|  |  |  | \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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | subscription:   primary "[" expression_list "]" | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | slicing:          simple_slicing | extended_slicing | 
					
						
							|  |  |  | simple_slicing:   primary "[" short_slice "]" | 
					
						
							|  |  |  | extended_slicing: primary "[" slice_list "]"  | 
					
						
							|  |  |  | slice_list:       slice_item ("," slice_item)* [","] | 
					
						
							|  |  |  | slice_item:       expression | proper_slice | ellipsis | 
					
						
							|  |  |  | proper_slice:     short_slice | long_slice | 
					
						
							|  |  |  | short_slice:      [lower_bound] ":" [upper_bound] | 
					
						
							|  |  |  | long_slice:       short_slice ":" [stride] | 
					
						
							|  |  |  | lower_bound:      expression | 
					
						
							|  |  |  | upper_bound:      expression | 
					
						
							|  |  |  | stride:           expression | 
					
						
							|  |  |  | ellipsis:         "..." | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | sequence's length, respectively.  If either bound is negative, the | 
					
						
							|  |  |  | 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | call:                   primary "(" [argument_list [","]] ")" | 
					
						
							|  |  |  | argument_list:          positional_arguments ["," keyword_arguments] | 
					
						
							|  |  |  |                       | keyword_arguments | 
					
						
							|  |  |  | positional_arguments:   expression ("," expression)* | 
					
						
							|  |  |  | keyword_arguments:      keyword_item ("," keyword_item)* | 
					
						
							|  |  |  | keyword_item:           identifier "=" expression | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | interpreter; see the library reference manual for the descriptions of | 
					
						
							|  |  |  | built-in functions and methods. | 
					
						
							|  |  |  | \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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | power:         primary ["**" u_expr] | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | type is that of the arguments after coercion; if the result is not | 
					
						
							|  |  |  | expressible in that type (as in raising an integer to a negative | 
					
						
							|  |  |  | power, or a negative floating point number to a broken power), a | 
					
						
							|  |  |  | \exception{TypeError} exception is raised. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | u_expr:         power | "-" u_expr | "+" u_expr | "~" u_expr | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | m_expr:         u_expr | m_expr "*" u_expr | 
					
						
							|  |  |  |               | m_expr "/" u_expr | m_expr "%" u_expr
 | 
					
						
							|  |  |  | a_expr:         m_expr | aexpr "+" m_expr | aexpr "-" m_expr | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | must be a plain integer 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 | 
					
						
							|  |  |  | performed; a negative repetition factor yields an empty sequence. | 
					
						
							|  |  |  | \index{multiplication} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The \code{/} (division) operator yields the quotient of its | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 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); | 
					
						
							|  |  |  | the absolute value of the result is strictly smaller than the second | 
					
						
							|  |  |  | operand. | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | floating point and complex numbers; there a similar identity holds where | 
					
						
							|  |  |  | \code{x/y} is replaced by \code{floor(x/y)}) or | 
					
						
							|  |  |  | \code{floor((x/y).real)}, respectively. | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | shift_expr:     a_expr | shift_expr ( "<<" | ">>" ) a_expr | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | and_expr:       shift_expr | and_expr "&" shift_expr | 
					
						
							|  |  |  | xor_expr:       and_expr | xor_expr "^" and_expr | 
					
						
							|  |  |  | or_expr:       xor_expr | or_expr "|" xor_expr | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Comparisons\label{comparisons}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \index{comparison} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | Contrary to \C, all comparison operations in Python have the same | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | priority, which is lower than that of any arithmetic, shifting or | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | bitwise operation.  Also contrary to \C, expressions like | 
					
						
							|  |  |  | \code{a < b < c} have the interpretation that is conventional in | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | mathematics: | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | \indexii{C}{language} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | comparison:     or_expr (comp_operator or_expr)* | 
					
						
							|  |  |  | comp_operator:  "<"|">"|"=="|">="|"<="|"<>"|"!="|"is" ["not"]|["not"] "in" | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | Comparisons yield integer values: \code{1} for true, \code{0} for 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 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \code{<>} is also acceptable.  At some point in the (far) future, | 
					
						
							|  |  |  | \code{<>} may become obsolete. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-11-25 19:23:33 +00:00
										 |  |  | The operators \texttt{"<", ">", "==", ">=", "<="}, and \texttt{"!="} compare | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | the values of two objects.  The objects needn't have the same type. | 
					
						
							|  |  |  | If both are numbers, they are coverted 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 | 
					
						
							|  |  |  | characters. | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | Tuples and lists are compared lexicographically using comparison of | 
					
						
							|  |  |  | corresponding items. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							|  |  |  | Mappings (dictionaries) are compared through lexicographic | 
					
						
							| 
									
										
										
										
											1999-04-05 21:32:52 +00:00
										 |  |  | comparison of their sorted (key, value) lists.\footnote{ | 
					
						
							|  |  |  | This is expensive since it requires sorting the keys first, | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | but it is about the only sensible definition.  An 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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The operators \keyword{in} and \keyword{not in} test for sequence | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | membership: if \var{y} is a sequence, \code{\var{x} in \var{y}} is | 
					
						
							|  |  |  | true if and only if there exists an index \var{i} such that | 
					
						
							|  |  |  | \code{\var{x} = \var{y}[\var{i}]}. | 
					
						
							|  |  |  | \code{\var{x} not in \var{y}} yields the inverse truth value.  The | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | exception \exception{TypeError} is raised when \var{y} is not a sequence, | 
					
						
							| 
									
										
										
										
											1999-04-05 21:32:52 +00:00
										 |  |  | or when \var{y} is a string and \var{x} is not a string of length | 
					
						
							|  |  |  | one.\footnote{The latter restriction is sometimes a nuisance.} | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | expression:     or_test | lambda_form | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | or_test:        and_test | or_test "or" and_test | 
					
						
							|  |  |  | and_test:       not_test | and_test "and" not_test | 
					
						
							|  |  |  | not_test:       comparison | "not" not_test | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | lambda_form:	"lambda" [parameter_list]: expression | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | The operator \keyword{not} yields \code{1} if its argument is false, | 
					
						
							|  |  |  | \code{0} 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 | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | and type they return to \code{0} and \code{1}, but rather return the | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											1998-07-24 15:36:43 +00:00
										 |  |  | same type as its argument, so e.g., \code{not 'foo'} yields \code{0}, | 
					
						
							| 
									
										
										
										
											1998-05-14 19:37:06 +00:00
										 |  |  | not \code{''}.) | 
					
						
							| 
									
										
										
										
											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}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | yields a function object that behaves virtually identical to one | 
					
						
							|  |  |  | 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} | 
					
						
							|  |  |  | \indexii{lambda}{expression} | 
					
						
							|  |  |  | \indexii{lambda}{form} | 
					
						
							|  |  |  | \indexii{anonmymous}{function} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | \strong{Programmer's note:} a lambda form defined inside a function | 
					
						
							|  |  |  | has no access to names defined in the function's namespace.  This is | 
					
						
							|  |  |  | because Python has only two scopes: local and global.  A common | 
					
						
							|  |  |  | work-around is to use default argument values to pass selected | 
					
						
							|  |  |  | variables into the lambda's namespace, e.g.: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | def make_incrementor(increment): | 
					
						
							|  |  |  |     return lambda x, n=increment: x+n | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-28 19:32:59 +00:00
										 |  |  | \section{Expression lists\label{exprlists}} | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \indexii{expression}{list} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | expression_list:      expression ("," expression)* [","] | 
					
						
							| 
									
										
										
										
											1998-05-06 19:52:49 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | An expression (expression) list containing at least one comma yields a | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											1998-07-23 21:57:42 +00:00
										 |  |  | expression (expression) without a trailing comma doesn't create a | 
					
						
							|  |  |  | tuple, but rather yields the value of that expression (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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | group left to right (except for comparisons, which chain from left to | 
					
						
							|  |  |  | right --- see above). | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |     \lineii{\code{<<}, \code{>>}}		{Shifts} | 
					
						
							|  |  |  |   \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{**}}				{Exponentiation} | 
					
						
							|  |  |  |   \hline | 
					
						
							|  |  |  |     \lineii{\code{+\var{x}}, \code{-\var{x}}}	{Positive, negative} | 
					
						
							|  |  |  |     \lineii{\code{\~\var{x}}}			{Bitwise not} | 
					
						
							|  |  |  |   \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} |