Python27 PDF
Python27 PDF
7 quick reference
John W. Shipman
2013-05-30 19:01
Abstract
A reference guide to most of the common features of the Python programming language, version
2.7.
1 2
This publication is available in Web form and also as a PDF document . Please forward any
comments to tcc-doc@nmt.edu.
Table of Contents
1. Introduction: What is Python? .................................................................................................. 5
2. Python 2.7 and Python 3.x ........................................................................................................ 5
3. Starting Python ........................................................................................................................ 6
3.1. Using Python in Windows ............................................................................................. 6
3.2. Using Python in Linux ................................................................................................... 7
4. Line syntax .............................................................................................................................. 7
5. Names and keywords .............................................................................................................. 7
6. Basic types .............................................................................................................................. 8
7. Numeric types ......................................................................................................................... 9
7.1. Type int: Integers ........................................................................................................ 9
7.2. Type long: Extended-precision integers ......................................................................... 9
7.3. Type bool: Boolean truth values .................................................................................. 10
7.4. Type float: Floating-point numbers ............................................................................ 10
7.5. Type complex: Imaginary numbers ............................................................................. 11
8. Sequence types ....................................................................................................................... 11
8.1. Operations common to all the sequence types ................................................................ 12
9. Type str: Strings of 8-bit characters ........................................................................................ 14
9.1. String constants ........................................................................................................... 14
9.2. Definition of “whitespace” ........................................................................................... 15
9.3. Methods on str values ................................................................................................ 16
9.4. The string .format() method ..................................................................................... 23
9.4.1. General form of a format code ............................................................................ 24
9.4.2. The name part ................................................................................................... 24
9.4.3. The conversion part ....................................................................................... 25
9.4.4. The spec part ................................................................................................... 25
9.4.5. Formatting a field of variable length ................................................................... 29
9.5. The older string format operator ................................................................................... 30
10. Type unicode: Strings of 32-bit characters ............................................................................ 32
10.1. The UTF-8 encoding ................................................................................................... 33
1
2
http://www.nmt.edu/tcc/help/pubs/python27/web/
http://www.nmt.edu/tcc/help/pubs/python27/python27.pdf
3
4
http://www.nmt.edu/tcc/help/pubs/lang/pytut27/
http://www.python.org/
python -3 yourprogram
• To convert your program to Python 3.x, first make a copy of the original program, then run this
command:
python3-2to3 -w yourprogram
The -w flag replaces yourprogram with the converted 3.x version, and moves the original to
“yourprogram.bak”
6
For full documentation of the Python 3.2 version, see the online documentation .
3. Starting Python
You can use Python in two different ways:
• In “calculator” or “conversational mode”, Python will prompt you for input with three greater-than
signs (>>>). Type a line and Python will print the result. Here's an example:
>>> 2+2
4
>>> 1.0 / 7.0
0.14285714285714285
• You can also use Python to write a program, sometimes called a script.
5
6
http://docs.python.org/whatsnew/
http://docs.python.org/py3k/
python
python filename.py
Under Unix, you can also make a script self-executing by placing this line at the top:
#!/usr/bin/env python
You must also tell Linux that the file is executable by using the command “chmod +x filename”.
For example, if your script is called hello.py, you would type this command:
chmod +x hello.py
4. Line syntax
The comment character is “#”; comments are terminated by end of line.
Long lines may be continued by ending the line with a backslash (\), but this is not necessary if there
is at least one open “(”, “[”, or “{”.
>>> 999+1
1000
>>> 0o77
63
>>> 0xff
255
>>> 0b1001
9
Note
The 0o and 0b prefixes work only in Python versions 2.6 and later. In 2.5 and earlier versions, any
number starting with “0” was considered to be octal. This functionality is retained in the 2.6+ versions,
but will not work in the Python 3.x versions.
To convert other numbers or character strings to type int, see Section 20.19, “int(): Convert to int
type” (p. 67).
If you perform operations on int values that result in numbers that are too large, Python automatically
converts them to long type; see Section 7.2, “Type long: Extended-precision integers” (p. 9).
>>> 2 < 3
True
>>> 3 < 2
False
>>> True+4
5
>>> False * False
0
These values are considered False wherever true/false values are expected, such as in an if statement:
• The bool value False.
• Any numeric zero: the int value 0, the float value 0.0, the long value 0L, or the complex value
0.0j.
• Any empty sequence: the str value '', the unicode value u'', the empty list value [], or the
empty tuple value ().
• Any empty mapping, such as the empty dict (dictionary) value {}.
• The special value None.
All other values are considered True. To convert any value to a Boolean, see Section 20.5, “bool():
Convert to Boolean” (p. 61).
7
http://en.wikipedia.org/wiki/IEEE_754-1985
>>> 5j
5j
>>> 1+2.56j
(1+2.5600000000000001j)
>>> (1+2.56j)*(-1-3.44j)
(7.8064-6j)
Unlike Python's other numeric types, complex numbers are a composite quantity made of two parts:
the real part and the imaginary part, both of which are represented internally as float values. You can
retrieve the two components using attribute references. For a complex number C:
• C.real is the real part.
• C.imag is the imaginary part as a float, not as a complex value.
>>> a=(1+2.56j)*(-1-3.44j)
>>> a
(7.8064-6j)
>>> a.real
7.8064
>>> a.imag
-6.0
To construct a complex value from two float values, see Section 20.9, “complex(): Convert to
complex type” (p. 63).
8. Sequence types
The next four types described (str, unicode, list and tuple) are collectively referred to as sequence
types.
Each sequence value represents an ordered set in the mathematical sense, that is, a collection of things
in a specific order.
Python distinguishes between mutable and immutable sequences:
• An immutable sequence can be created or destroyed, but the number, sequence, and values of its
elements cannot change.
• The values of a mutable sequence can be changed. Any element can be replaced or deleted, and new
elements can be added at the beginning, the end, or in the middle.
S*n
For a sequence S and a positive integer n, the result is a new sequence containing all the elements
of S repeated n times.
>>> 'worra'*8
'worraworraworraworraworraworraworraworra'
>>> [0]*4
[0, 0, 0, 0]
>>> (True, False)*5
(True, False, True, False, True, False, True, False, True, False)
x in S
Is any element of a sequence S equal to x?
For convenience in searching for substrings, if the sequence to be searched is a string, the x operand
can be a multi-character string. In that case, the operation returns True if x is found anywhere in
S.
>>> 1 in [2,4,6,0,8,0]
False
>>> 0 in [2,4,6,0,8,0]
True
>>> 'a' in 'banana'
True
x not in S
Are all the elements of a sequence S not equal to x?
S[i]
Subscripting: retrieve the ith element of s, counting from zero. If i is greater than or equal to the
number of elements of S, an IndexError exception is raised.
>>> 'Perth'[0]
'P'
>>> 'Perth'[1]
'e'
>>> 'Perth'[4]
'h'
>>> 'Perth'[5]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> ('red', 'yellow', 'green')[2]
'green'
S[i:j]
Slicing: For a sequence S and two integers i and j, return a new sequence with copies of the elements
of S between positions i and j.
The values used in slicing refer to the positions between elements, where position zero is the position
before the first element; position 1 is between the first and second element; and so on.
You can also specify positions relative to the end of a sequence. Position -1 is the position before
the last element; -2 is the position before the second-to-last element; and so on.
You can omit the starting position to obtain a slice starting at the beginning. You can omit the ending
position to get all the elements through the last.
For example, here is a diagram showing three slices of the string 'abcdef'.
[−6][−5][−4][−3][−2][−1]
a b c d e f
[0] [1] [2] [3] [4] [5] [6]
[2:5]
[:3] [3:]
S[i:j:k]
You can use a slice expression like this to select every kth element. Examples:
>>> 'Penguin'
'Penguin'
>>> "ha'penny"
"ha'penny"
>>> "Single ' and double\" quotes"
'Single \' and double" quotes'
>>> ''
''
>>> ""
''
>>> s='''This string
... contains two lines.'''
>>> t="""This string
... contains
... three lines."""
8
In addition, you can use any of these escape sequences inside a string constant (see Wikipedia for more
information on the ASCII code).
Raw strings: If you need to use a lot of backslashes inside a string constant, and doubling them is too
confusing, you can prefix any string with the letter r to suppress the interpretation of escape sequences.
For example, '\\\\' contains two backslashes, but r'\\\\' contains four. Raw strings are particularly
useful with Section 28.5, “re: Regular expression pattern-matching” (p. 144).
8
http://en.wikipedia.org/wiki/ASCII
S.center(w)
Return S centered in a string of width w, padded with spaces. If w<=len(S), the result is a copy of
S. If the number of spaces of padding is odd, the extra space will placed after the centered value.
Example:
>>> 'x'.center(4)
' x '
S.count(t[,start[,end]])
Return the number of times string t occurs in S. To search only a slice S[start:end] of S, supply
start and end arguments.
>>> 'banana'.count('a')
3
>>> 'bananana'.count('na')
3
>>> 'banana'.count('a', 3)
2
>>> 'banana'.count('a', 3, 5)
1
S.decode ( encoding )
If S contains an encoded Unicode string, this method will return the corresponding value as unicode
type. The encoding argument specifies which decoder to use; typically this will be the string
'utf_8' for the UTF-8 encoding. For discussion and examples, see Section 10.1, “The UTF-8 en-
coding” (p. 33).
S.endswith(t[,start[,end]])
Predicate to test whether S ends with string t. If you supply the optional start and end arguments,
it tests whether the slice S[start:end] ends with t.
9
http://en.wikipedia.org/wiki/ASCII
S.expandtabs([tabsize])
Returns a copy of S with all tabs replaced by one or more spaces. Each tab is interpreted as a request
to move to the next “tab stop”. The optional tabsize argument specifies the number of spaces
between tab stops; the default is 8.
Here is how the function actually works. The characters of S are copied to a new string T one at a
time. If the character is a tab, it is replaced by enough tabs so the new length of T is a multiple of
the tab size (but always at least one space).
>>> 'X\tY\tZ'.expandtabs()
'X Y Z'
>>> 'X\tY\tZ'.expandtabs(4)
'X Y Z'
>>> 'a\tbb\tccc\tdddd\teeeee\tfffff'.expandtabs(4)
'a bb ccc dddd eeeee fffff'
S.find(t[,start[,end]])
If string t is not found in S, return -1; otherwise return the index of the first position in S that
matches t.
The optional start and end arguments restrict the search to slice S[start:end].
>>> 'banana'.find('an')
1
>>> 'banana'.find('ape')
-1
>>> 'banana'.find('n', 3)
4
>>> 'council'.find('c', 1, 4)
-1
.format(*p, **kw)
See Section 9.4, “The string .format() method” (p. 23).
S.index(t[,start[,end]])
Works like .find(), but if t is not found, it raises a ValueError exception.
>>> 'council'.index('co')
0
>>> 'council'.index('phd')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
S.isalnum()
Predicate that tests whether S is nonempty and all its characters are alphanumeric.
S.isalpha()
Predicate that tests whether S is nonempty and all its characters are letters.
>>> 'abc123'.isalpha()
False
>>> 'MaryRecruiting'.isalpha()
True
>>> ''.isalpha()
False
S.isdigit()
Predicate that tests whether S is nonempty and all its characters are digits.
>>> 'abc123'.isdigit()
False
>>> ''.isdigit()
False
>>> '2415'.isdigit()
True
S.islower()
Predicate that tests whether S is nonempty and all its letters are lowercase (non-letter characters
are ignored).
>>> ''.islower()
False
>>> 'abc123'.islower()
True
>>> 'ABC123'.islower()
False
S.isspace()
Predicate that tests whether S is nonempty and all its characters are whitespace characters.
>>> ''.isspace()
False
>>> ' \t\n\r'.isspace()
True
>>> 'killer \t \n rabbit'.isspace()
False
S.istitle()
A predicate that tests whether S has “title case”. In a title-cased string, uppercase characters
may appear only at the beginning of the string or after some character that is not a letter. Lowercase
characters may appear only after an uppercase letter.
S.isupper()
Predicate that tests whether S is nonempty and all its letters are uppercase letters (non-letter char-
acters are ignored).
>>> 'abcDEF'.isupper()
False
>>> '123GHI'.isupper()
True
>>> ''.isupper()
False
S.join(L)
L must be an iterable that produces a sequence of strings. The returned value is a string containing
the members of the sequence with copies of the delimiter string S inserted between them.
One quite common operation is to use the empty string as the delimiter to concatenate the elements
of a sequence.
Examples:
S.ljust(w)
Return a copy of S left-justified in a field of width w, padded with spaces. If w<=len(S), the result
is a copy of S.
>>> "Ni".ljust(4)
'Ni '
S.lower()
Returns a copy of S with all uppercase letters replaced by their lowercase equivalent.
S.lstrip([c])
Return S with all leading characters from string c removed. The default value for c is a string con-
taining all the whitespace characters.
S.replace(old,new[,max])
Return a copy of S with all occurrences of string old replaced by string new. Normally, all occur-
rences are replaced; if you want to limit the number of replacements, pass that limit as the max ar-
gument.
S.rfind(t[,start[,end]])
Like .find(), but if t occurs in S, this method returns the highest starting index.
>>> 'banana'.find('a')
1
>>> 'banana'.rfind('a')
5
S.rindex(t[,start[,end]])
Similar to S.index(), but it returns the last index in S where string t is found. It will raise a
ValueError exception if the string is not found.
S.rjust(w[,fill])
Return a copy of S right-justified in a field of width w, padded with spaces. If w<=len(S), the result
is a copy of S.
To pad values with some character other than a space, pass that character as the optional second
argument.
S.rpartition(d)
Similar to S.partition(), except that it finds the last occurrence of the delimiter.
S.rsplit(d[,max])
Similar to S.split(d[,max]), except that if there are more fields than max, the split fields are
taken from the end of the string instead of from the beginning.
S.rstrip([c])
Return S with all trailing characters from string c removed. The default value for c is a string con-
taining all the whitespace characters.
S.split([d[,max]])
Returns a list of strings [s0, s1, ...] made by splitting S into pieces wherever the delimiter
string d is found. The default is to split up S into pieces wherever clumps of one or more whitespace
characters are found.
The optional max argument limits the number of pieces removed from the front of S. The resulting
list will have no more than max+1 elements.
To use the max argument while splitting the string on clumps of whitespace, pass None as the first
argument.
>>> 'a/b/c/d/e'.split('/', 2)
['a', 'b', 'c/d/e']
>>> 'a/b'.split('/', 2)
['a', 'b']
>>> "I am Zoot's identical twin sister, Dingo.".split(None, 2)
['I', 'am', "Zoot's identical twin sister, Dingo."]
S.startswith(t[,start[,end]])
Predicate to test whether S starts with string t. Otherwise similar to .endswith().
>>> "bishop".startswith('bish')
True
>>> "bishop".startswith('The')
False
S.strip([c])
Return S with all leading and trailing characters from string c removed. The default value for c is
a string containing all the whitespace characters.
S.swapcase()
Return a copy of S with each lowercase character replaced by its uppercase equivalent, and vice
versa.
>>> "abcDEF".swapcase()
'ABCdef'
S.title()
Returns the characters of S, except that the first letter of each word is uppercased, and other letters
are lowercased.
S.translate(new[,drop])
This function is used to translate or remove each character of S. The new argument is a string of
exactly 256 characters, and each character x of the result is replaced by new[ord(x)].
If you would like certain characters removed from S before the translation, provide a string of those
characters as the drop argument.
For your convenience in building the special 256-character strings used here, see the definition of
the maketrans() function of Section 28.2, “string: Utility functions for strings” (p. 139), where
you will find examples.
S.upper()
Return a copy of S with all lowercase characters replaced by their uppercase equivalents.
>>> '12'.zfill(9)
'000000012'
Note
This method was added in Python 2.6.
Quite often, we want to embed data values in some explanatory text. For example, if we are displaying
the number of nematodes in a hectare, it is a lot more meaningful to display it as "There were 37.9
nematodes per hectare" than just "37.9". So what we need is a way to mix constant text like
"nematodes per hectare" with values from elsewhere in your program.
Here is the general form:
The template is a string containing a mixture of one or more format codes embedded in constant text.
The format method uses its arguments to substitute an appropriate value for each format code in the
template.
The arguments to the .format() method are of two types. The list starts with zero or more positional
arguments pi, followed by zero or more keyword arguments of the form ki=vi, where each ki is a
name with an associated value vi.
Just to give you the general flavor of how this works, here's a simple conversational example. In this
example, the format code “{0}” is replaced by the first positional argument (49), and “{1}” is replaced
by the second positional argument, the string "okra".
In the next example, we supply the values using keyword arguments. The arguments may be supplied
in any order. The keyword names must be valid Python names (see Section 5, “Names and
keywords” (p. 7)).
If you need to include actual “{” and “}” characters in the result, double them, like this:
• For the name portion, see Section 9.4.2, “The name part” (p. 24).
• For the conversion part, see Section 9.4.3, “The conversion part” (p. 25).
• For the spec part, see Section 9.4.4, “The spec part” (p. 25).
For example:
• If the associated argument has attributes, you can append an expression of this form to refer to that
attribute:
"."name
For example:
In general, you can use any combination of these features. For example:
Starting with Python 2.7, you may omit all of the numbers that refer to positional arguments, and they
will be used in the sequence they occur. For example:
If you use this convention, you must omit all those numbers. You can, however, omit all the numbers
and still use the keyword names feature:
!s str()
!r repr()
Here's an example:
>>> "{}".format('Don\'t')
"Don't"
>>> "{!r}".format('Don\'t')
'"Don\'t"'
":" [[fill] align] [sign] ["#"] ["0"] [width] [","] ["." prec] [type]
fill
You may specify any fill character except “}”. This character is used to pad a short value to the
specified length. It may be specified only in combination with an align character.
align
Specifies how to align values that are not long enough to occupy the specified length. There are
four values:
< Left-justify the value. This is the default alignment for string values.
> Right-justify the value. This is the default alignment for numbers.
^ Center the value.
= For numbers using a sign specifier, add the padding between the sign and the rest of the value.
>>> "{:>8}".format(13)
' 13'
sign
This option controls whether an arithmetic sign is displayed. There are three possible values:
"#"
This option selects the “alternate form” of output for some types.
• When formatting integers as binary, octal, or hexadecimal, the alternate form adds “0b”, “0o”,
or “0x” before the value, to show the radix explicitly.
• When formatting float, complex, or Decimal values, the “#” option forces the result to contain
a decimal point, even if it is a whole number.
>>>
"{:5.0f}".format(36)
' 36'
>>> "{:#5.0f}".format(36)
' 36.'
>>> from decimal import Decimal
>>> w=Decimal(36)
>>> "{:g}".format(w)
'36'
>>> "{:#g}".format(w)
'36.'
"0"
To fill the field with left zeroes, place a “0” at this position in your format code.
>>> "{:5d}".format(36)
' 36'
>>> "{:05d}".format(36)
'00036'
>>> "{:021.15}".format(1.0/7.0)
'00000.142857142857143'
width
Place a number at this position to specify the total width of the displayed value.
","
Place a comma at this position in your format code to display commas between groups of three digits
in whole numbers.
Note
This feature was added in Python 2.7.
"." precision
Use this part to specify the number of digits after the decimal point.
type
This code specifies the general type of format used. The default is to convert the value of a string
as if using the str() function. Refer to the table below for allowed values.
Examples:
>>> "{:b}".format(9)
'1001'
>>> "{:08b}".format(9)
'00001001'
>>> "{:c}".format(97)
'a'
>>> "{:d}".format(0xff)
>>> n = 42
>>> d = 8
>>> "{0:{1}d}".format(42, 8)
' 42'
>>> "{0:0{1}d}".format(42, 8)
'00000042'
>>>
You can, of course, also use keyword arguments to specify the field width. This trick also works for
variable precision.
"{count:0{width}d}".format(width=8, count=42)
'00000042'
>>>
The same technique applies to substituting any of the pieces of a format code.
f % v
where f is a template string and v specifies the value or values to be formatted using that template. If
multiple values are to be formatted, v must be a tuple.
The template string may contain any mixture of ordinary text and format codes. A format code always
starts with a percent (%) symbol. See Table 4, “Format codes” (p. 30).
The result of a format operation consists of the ordinary characters from the template with values sub-
stituted within them wherever a format code occurs. A conversational example:
In the above example, there are two format codes. Code “%d” means “substitute a decimal number
here,” and code “%s” means “substitute a string value here”. The number 49 is substituted for the first
format code, and the string "kiwis" replaces the second format code.
In general, format codes have this form:
%[p][m[.n]]c
Here are the format type codes, c in the general expression above:
You can also use the string format operator % to format a set of values from a dictionary D (see Section 16,
“Type dict: Dictionaries” (p. 49)):
f % D
%(k)[p][m[.n]]c
10
http://en.wikipedia.org/wiki/ASCII
u'klarn'
Examples:
>>> u'Klarn.'
u'Klarn.'
>>> u'Non-breaking-\xa0-space.'
u'Non-breaking-\xa0-space.'
>>> u'Less-than-or-equal symbol: \u2264'
u'Less-than-or-equal symbol: \u2264'
>>> u"Phoenician letter 'wau': \U00010905"
u"Phoenician letter 'wau': \U00010905"
>>> len(u'\U00010905')
1
All the operators and methods of str type are available with unicode values.
Additionally, for a Unicode value U, use this method to encode its value as a string of type str:
U.encode ( encoding[, error )
Return the value of U as type str. The encoding argument is a string that specifies the encoding
method. In most cases, this will be 'utf_8'. For discussion and examples, see Section 10.1, “The
UTF-8 encoding” (p. 33).
The optional error string specifies what to do with characters that do not have exact equivalents.
12
For example, if you are converting to the ASCII character set, the encoding argument is 'ascii'.
Values of the error argument are given in the table below.
11
12
http://www.unicode.org/
http://en.wikipedia.org/wiki/ASCII
>>> s = u"a\u262ez"
>>> len(s)
3
>>> s
u'a\u262ez'
>>> s.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u262e'
in position 1: ordinal not in range(128)
>>> s.encode('ascii', 'ignore')
'az'
>>> s.encode('ascii', 'replace')
'a?z'
>>> s.encode('ascii', 'xmlcharrefreplace')
'a☮z'
>>> hex(9774)
'0x262e'
>>> t = s.encode('ascii', 'backslashreplace')
>>> t
'a\\u262eb'
>>> print t
a\u262eb
>>> len(t)
8
>>> t[1]
'\\'
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x 7x 0 x x x x x x x
0 0 0 0 0 0 0 0 0 0 0 0 0 y y y y y z z z z z z 5y 6z 1 1 0 y y y y y 1 0 z z z z z z
0 0 0 0 0 0 0 0 x x x x y y y y y y z z z z z z 4x 6y 6z 1 1 1 0 x x x x 1 0 y y y y y y 1 0 z z z z z z
0 0 0 www x x x x x x y y y y y y z z z z z z 3w 6x 6y 6z 1 1 1 1 0 www 1 0 x x x x x x 1 0 y y y y y y 1 0 z z z z z z
U.encode('utf_8')
To decode a regular str value S that contains a UTF-8 encoded value, use this method:
S.decode('utf_8')
Examples:
>>> tilde='~'
>>> tilde.encode('utf_8')
'~'
>>> u16 = u'\u0456'
>>> s = u16.encode('utf_8')
>>> s
'\xd1\x96'
>>> s.decode('utf_8')
u'\u0456'
>>> u32 = u'\U000E1234'
>>> s = u32.encode('utf_8')
>>> s
'\xf3\xa1\x88\xb4'
>>> s.decode('utf_8')
u'\U000e1234'
UTF-8 is not the only encoding method. For more details, consult the documentation for the Python
14
module codecs .
13
14
http://en.wikipedia.org/wiki/ASCII
http://docs.python.org/library/codecs.html
[]
["baked beans"]
[23, 30.9, 'x']
You can also create a list by performing specific operations on each element of some sequence; see Sec-
tion 11.2, “List comprehensions” (p. 38).
Lists support all the operations described under Section 8.1, “Operations common to all the sequence
types” (p. 12). Methods available on lists are discussed in Section 11.1, “Methods on lists” (p. 35).
There are a number of functions that can be used with lists as well:
• Section 20.2, “all(): Are all the elements of an iterable true?” (p. 61).
• Section 20.3, “any(): Are any of the members of an iterable true?” (p. 61).
• Section 20.8, “cmp(): Compare two values” (p. 62).
• Section 20.12, “enumerate(): Step through indices and values of an iterable” (p. 64)
• Section 20.14, “filter(): Extract qualifying elements from an iterable” (p. 65).
• Section 20.21, “iter(): Produce an iterator over a sequence” (p. 68).
• Section 20.22, “len(): Number of elements” (p. 68).
• Section 20.23, “list(): Convert to a list” (p. 68).
• Section 20.25, “map(): Apply a function to each element of an iterable” (p. 69).
• Section 20.26, “max(): Largest element of an iterable” (p. 70).
• Section 20.27, “min(): Smallest element of an iterable” (p. 70).
• Section 20.33, “range(): Generate an arithmetic progression as a list” (p. 72).
• Section 20.35, “reduce(): Sequence reduction” (p. 73).
• Section 20.36, “reversed(): Produce a reverse iterator” (p. 74).
• Section 20.39, “sorted(): Sort a sequence” (p. 76).
• Section 20.41, “sum(): Total the elements of a sequence” (p. 76).
• Section 20.46, “xrange(): Arithmetic progression generator” (p. 78).
• Section 20.47, “zip(): Combine multiple sequences” (p. 78).
L.count(x)
Return the number of elements of L that compare equal to x.
L.extend(S)
Append another sequence S to L.
>>> colors
['red', 'green', 'blue', 'indigo']
>>> colors.extend(['violet', 'pale puce'])
>>> colors
['red', 'green', 'blue', 'indigo', 'violet', 'pale puce']
>>> colors
['red', 'green', 'blue', 'indigo', 'violet', 'pale puce']
>>> colors.index('blue')
2
>>> colors.index('taupe')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.index(x): x not in list
>>> M=[0, 0, 3, 0, 0, 3, 3, 0, 0, 3]
>>> M.index(3)
2
>>> M.index(3, 4, 8)
5
>>> M.index(3, 0, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.index(x): x not in list
L.insert(i,x)
Insert a new element x into list L just before the ith element, shifting all higher-number elements
to the right. No value is returned.
>>> colors
['red', 'green', 'blue', 'indigo', 'violet', 'pale puce']
>>> colors[1]
'green'
>>> colors.insert(1, "yellow")
>>> colors
['red', 'yellow', 'green', 'blue', 'indigo', 'violet', 'pale puce']
L.pop([i])
Remove and return the element with index i from L. The default value for i is -1, so if you pass no
argument, the last element is removed.
L.remove(x)
Remove the first element of L that is equal to x. If there aren't any such elements, raises ValueError.
>>> colors
['red', 'yellow', 'green', 'blue', 'violet']
>>> colors.remove('yellow')
>>> colors
['red', 'green', 'blue', 'violet']
>>> colors.remove('cornflower')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> notMuch = [0, 0, 3, 0]
>>> notMuch.remove(0)
>>> notMuch
[0, 3, 0]
>>> notMuch.remove(0)
>>> notMuch
[3, 0]
>>> notMuch.remove(0)
>>> notMuch
[3]
>>> notMuch.remove(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
L.reverse()
Reverses the elements of L in place. Does not return a result. Compare Section 20.36, “reversed():
Produce a reverse iterator” (p. 74).
>>> colors
['red', 'green', 'blue', 'violet']
>>> colors.reverse()
>>> colors
['violet', 'blue', 'green', 'red']
>>> temps=[67, 73, 85, 93, 92, 78, 95, 100, 104]
>>> temps.sort()
>>> temps
[67, 73, 78, 85, 92, 93, 95, 100, 104]
>>> def reverser(n1, n2):
... '''Comparison function to use reverse order.
... '''
... return cmp(n2, n1)
...
>>> temps.sort(reverser)
>>> temps
[104, 100, 95, 93, 92, 85, 78, 73, 67]
>>> def unitsDigit(n):
... '''Returns only the units digit of n.
... '''
... return n % 10
...
>>> temps.sort(None, unitsDigit)
>>> temps
[100, 92, 93, 73, 104, 95, 85, 67, 78]
>>> temps.sort(None, None, True)
>>> temps
[104, 100, 95, 93, 92, 85, 78, 73, 67]
[ e
for v1 in s1
for v2 in s2
...
if c ]
In the next example, we use two for loops. The outer loop generates the sequence [1, 2, 3], and
the inner loop generates the sequence [50, 51]. The expression “x*1000 + y” is computed for each
of the resulting six value sets for x and y, and the result is appended to the list being built.
>>> [ x*1000 + y
... for x in range(1,4)
... for y in range(50, 52) ]
[1050, 1051, 2050, 2051, 3050, 3051]
In the next example, there are two nested loops, each generating the sequence [0, 1, 2]. For each of
the nine trips through the inner loop, we test the values of x and y and discard the cases where they
are equal. The expression “(y, x)” combines the two values into a 2-tuple.
>>> [ (y, x)
... for y in range(3)
... for x in range(3)
... if x != y ]
[(0, 1), (0, 2), (1, 0), (1, 2), (2, 0), (2, 1)]
>>> d={}
>>> d[(23,59)] = 'hike'
>>> d[[46,19]] = 'hut'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list objects are unhashable
(value,)
That is, you must provide a comma before the closing “)”, in order to show that it is a tuple, and not
just a parenthesized expression. Note especially the last two examples below:
>>> ()
()
>>> ('farcical', 'aquatic', 'ceremony')
('farcical', 'aquatic', 'ceremony')
>>> ('Ni',)
('Ni',)
>>> ('Ni')
'Ni'
You may also convert any iterable into a tuple using Section 20.42, “tuple(): Convert to a tuple” (p. 77).
The tuple type does not have comprehensions (see Section 11.2, “List comprehensions” (p. 38)), but
you can get the equivalent by applying the tuple() function to a list comprehension. Here is an example:
Tuples also support the .index() and .count() methods as described in Section 11.1, “Methods on
lists” (p. 35).
15
http://www.unicode.org/
>>> s=bytes(987)
>>> s
'987'
>>> type(s)
<type 'str'>
Use this type where your program expects 8-bit characters, and it will ease the transition to Python 3.x,
because the semi-automated translation process will know that values of bytes type are intended for
sequences of 8-bit characters.
>>> s = b'abc'
>>> s
'abc'
>>> type(s)
<type 'str'>
Such literals are exactly like regular string literals. The difference comes when you convert your program
to the 3.x versions. In Python 3.x, a string of the form b'...' will have type bytes, which will be dif-
ferent than the str (32-bit character) type in 3.x.
One step in converting your 2.x programs to 3.x is to add this import before all the other imports in
your program:
In programs that start with this declaration, all string literals will automatically be considered unicode
type without using the u'...' prefix. This means you may also include escape sequences of the form
'\uXXXX', each of which designates a 16-bit Unicode code point as four hexadecimal digits XXXX.
Here is a demonstration of the difference. Before the import, the \u escape is not recognized, and the
value has type str. Afterwards, the return value is type unicode
>>> s = '\u2672'
>>> len(s)
6
>>> s
'\\u2672'
>>> type(s)
<type 'str'>
>>> from __future__ import unicode_literals
>>> t = '\u2672'
>>> len(t)
>>> s=bytearray('abcdef')
>>> s
bytearray(b'abcdef')
>>> type(s)
<type 'bytearray'>
>>> s[3]
100
>>> s.insert(0, b'^')
>>> s
bytearray(b'^abcdef')
>>> s.reverse()
>>> s
bytearray(b'fedcba^')
>>> s[2:6]
bytearray(b'dcba')
>>> s[2:6] = b'#'
>>> s
bytearray(b'fe#^')
>>> s[0]=63
>>> s
bytearray(b'?e#^')
>>>
The bytearray type also has a static method named .fromhex() that creates a bytearray value
from a Unicode string containing hexadecimal characters (which may be separated by spaces for legib-
ility).
• Starting in Python 2.7, you can create a set by simply enclosing one or more elements within braces
{...} separated by commas.
s1 = {1, 1, 1, 9, 1, 8, 9, 8, 3}
>>> s1
set([8, 9, 3, 1])
Note the wording “one or more:” an empty pair of braces “{}” is an empty dictionary, not an empty
set.
• A frozenset value is immutable: you can't change the membership, but you can use a frozenset
value in contexts where set values are not allowed. For example, you can use a frozenset as a key
in a dictionary, but you can't use a set value as a dictionary key.
To create a set or frozenset, see Section 20.38, “set(): Create an algebraic set” (p. 75) and Sec-
tion 20.17, “frozenset(): Create a frozen set” (p. 66).
A number of functions that work on sequences also work on sets. In each case, the set is converted to a
list before being passed to the function.
{ e
for v1 in s1
for v2 in s2
...
if c }
As with a list comprehension, you use one or more for clauses to iterate over sets of values, and the
expression e is evaluated for every combination of the values in the sequences si. If there is no “if”
clause, or if the “if” condition evaluates as True, the value is added to the sequence from which a set
is then constructed.
Here is an example. Function takeUppers() takes one string argument and returns a set of the unique
letters in that string, uppercased. The for clause iterates over the characters in the argument s; the if
clause discards characters that aren't letters; and the .upper() method converts lowercase letters to
uppercase.
x not in S
Predicate that tests whether element x is not a member of set S.
S1 == S2
Predicate that tests whether sets S1 and S2 have exactly the same members.
S1 != S2
Predicate that tests whether sets S1 and S2 have different members.
S1 < S2
Predicate that tests whether S1 is a proper subset of S2; that is, all the elements of S1 are also
members of S2, but there is at least one element of S2 that is not in S1.
S1 > S2
Predicate that tests whether S1 is a proper superset of S2; that is, all the elements of S2 are also
members of S1, but there is at least one element of S1 that is not in S2.
S.copy()
Return a new set of the same type as S, containing all the same elements.
>>> s1=set('aeiou')
>>> s2=s1
>>> s3=s1.copy()
>>> s1.add('y')
>>> s1
S1.difference(S2)
Returns a new set of the same type as S1, containing only those values found in S1 but not found
in S2. The S2 argument may be a set or a sequence.
>>> set('roygbiv').difference('rgb')
set(['i', 'o', 'v', 'y'])
S1 - S2
Same as S1.difference(S2), except that S2 must be a set.
S1.intersection(S2)
Returns a new set, of the same type as S1, containing only the elements found both in S1 and S2.
S2 may be a set or a sequence.
>>> set([1,2,3,5,7,11]).intersection(set([1,3,5,7,9]))
set([1, 3, 5, 7])
>>> set([1,3,5]).intersection( (2,4,6,8) )
set([])
S1 & S2
Same as S1.intersection(S2), but S2 must be a set.
S1.issubset(S2)
Predicate that tests whether every element of S1 is also in S2. S2 may be a set or a sequence.
>>> set([1,2]).issubset(set([2,4,1,8]))
True
>>> set([2,4,1,8]).issubset(set([1,2]))
False
>>> set(['r', 'g', 'b']) <= set(['r', 'o', 'y', 'g', 'b', 'i', 'v'])
True
S1 <= S2
Same as S1.issubset(S2), but S2 must be a set.
S1.issuperset(S2)
Predicate that tests whether every element of S2 is also in S1. S2 may be a set or a sequence.
>>> set([1,2]).issuperset(set([2,4,1,8]))
False
>>> set([2,4,1,8]).issuperset(set([1,2]))
True
S1 >= S2
Same as S1.issuperset(S2).
>>> set('aeiou').symmetric_difference('etaoin')
set(['n', 'u', 't'])
S1 ^ S2
Same as S1.symmetric_difference(S2), but S2 must be a set.
S1.union(S2)
Returns a new set, with the same type as S1, containing all the elements found in either S1 or S2.
The S2 argument may be a set or a sequence.
>>> set([1,2]).union(set([1,3,7]))
set([1, 2, 3, 7])
>>> set([1,2]).union( (8,2,4,5) )
set([8, 1, 2, 4, 5])
S1 | S2
Same as S1.union(S2).
S.clear()
Remove all the elements from set S.
>>> pbr
set(['Brazil', 'USA'])
>>> pbr.clear()
>>> pbr
set([])
S.discard(x)
If set S contains element x, remove that element from S.
If x is not in S, it is not considered an error; compare S.remove(x).
>>> pbr
set(['Brazil', 'Australia', 'USA'])
>>> pbr.discard('Swaziland')
S1.difference_update(S2)
Modify set S1 by removing any values found in S2. Value S2 may be a set or a sequence.
>>> s1=set('roygbiv')
>>> s1.difference_update('rgb')
>>> s1
set(['i', 'o', 'v', 'y'])
S1 -= S2
Same as S1.difference_update(S2), but S2 must be a set.
S1.intersection_update(S2)
Modify set S1 so that it contains only values found in both S1 and S2.
>>> s1=set('roygbiv')
>>> s1
set(['b', 'g', 'i', 'o', 'r', 'v', 'y'])
>>> s1.intersection_update('roy')
>>> s1
set(['y', 'r', 'o'])
S1 &= S2
Same as S1.intersection_update(S2), but S2 must be a set.
S.remove(x)
If element x is in set S, remove that element from S.
If x is not an element of S, this operation will raise a KeyError exception.
>>> pbr
set(['Brazil', 'Canada', 'Australia', 'USA'])
>>> pbr.remove('Canada')
>>> pbr
set(['Brazil', 'Australia', 'USA'])
>>> pbr.remove('Swaziland')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Swaziland'
S1.symmetric_difference_update(S2)
Remove from S1 any elements found in both S1 and S2. Value S2 may be a set or a sequence.
>>> s1=set('abcd')
>>> s1.symmetric_difference_update('cdefg')
>>> s1
set(['a', 'b', 'e', 'g', 'f'])
S1 ^= S2
Same as S1.symmetric_difference_update(S2), but S2 must be a set.
>>> s1=set('rgb')
>>> s1
set(['r', 'b', 'g'])
>>> s1.update('roygbiv')
>>> s1
set(['b', 'g', 'i', 'o', 'r', 'v', 'y'])
S1 |= S2
Same as S1.update(S2), but S2 must be a set.
There can be any number of key-value pairs (including zero). Each key-value has the form “ki:vi”,
and pairs are separated by commas. Here are some examples of dictionaries:
{}
{'Bolton': 'Notlob', 'Ipswich': 'Esher'}
{(1,1):48, (8,20): 52}
For efficiency reasons, the order of the pairs in a dictionary is arbitrary: it is essentially an unordered
set of ordered pairs. If you display a dictionary, the pairs may be shown in a different order than you
used when you created it.
D[k] = v
If dictionary D does not have a key-value pair whose key equals k, a new pair is added with key k
and value v.
If D already has a key-value pair whose key equals k, the value of that pair is replaced by v.
k in D
A predicate that tests whether D has a key equal to k.
k not in D
A predicate that tests whether D does not have a key equal to k.
del D[k]
In Python, del is a statement, not a function; see Section 22.3, “The del statement: Delete a name
or part of a value” (p. 94).
If dictionary D has a key-value pair whose key equals k, that key-value pair is deleted from D. If
there is no matching key-value pair, the statement will raise a KeyError exception.
D.get(k, x)
If dictionary D has a key equal to x, it returns the corresponding value, that is, it is the same as the
expression “D[x]”.
D.has_key(k)
A predicate that returns True if D has a key k.
D.items()
Returns the contents of dictionary D as a list of two-element tuples (k, v), in no particular order.
D.iteritems()
Returns an iterator that generates the values from dictionary D as a sequence of two-element tuples
(k, v). See Section 24.2, “Iterators: Values that can produce a sequence of values” (p. 110).
D.iterkeys()
Returns an iterator that generates the keys from dictionary D. See Section 24.2, “Iterators: Values
that can produce a sequence of values” (p. 110).
D.keys()
Returns a list of the key values in dictionary D, in no particular order.
D.popitem()
Returns an arbitrary entry from dictionary D as a (key, value) tuple, and also removes that entry.
If D is empty, raises a KeyError exception.
D.setdefault(k, x)
If dictionary D has a key equal to k, this method returns the corresponding value D[k].
If D has no key equal to k, the method returns the default value x. However, unlike the .get()
method, it also creates a new key-value pair (k, x) in D.
As with the .get() method, the second argument is optional, and defaults to the value None.
D.values()
Returns a list of the values from key-value pairs in dictionary D, in no particular order. However,
if you call both the .items() and .values() methods of a dictionary without changing that
dictionary's contents between those calls, Python guarantees that the ordering of the two results
will be the same.
D.update(D2)
Merge the contents of dictionary D2 into dictionary D. For any key-value pairs that have the same
key in both D and D2, the value for that key in D after this operation will be the value from D2, not
the value from D.
{ ek: ev
for v1 in s1
for v2 in s2
...
if c }
As with list comprehensions, you provide one or more for clauses and an optional if clause. For all
possible combinations of the values in the for clauses that have a true value for the if clause, two ex-
pressions ek and ev are evaluated, and a new dictionary entry is added with key ek and value ev.
16
Here is an example. The Wikipedia article on the game of Scrabble gives the Scrabble score for each
letter of the alphabet.
What we would like is a dictionary whose keys are letters, and each related value is the score. However,
the Wikipedia article shows the score values grouped by score: the 1's together, the 2's together, and so
on. So, to make it easy to check that we have entered the right score values and letters, we can use a list
of tuples, where the first element of each tuple is the score and the second element is a string of all the
letters with that score. We can then convert that list to the desired dictionary using a dictionary compre-
hension.
Execution proceeds in this manner until all the for clauses are complete. Then the name scrabbleMap
is bound to the resulting dictionary.
16
http://en.wikipedia.org/wiki/Scrabble_letter_distributions
f = open(name[,mode[,bufsize]]])
name
The path name of the file to be opened, as a string.
mode
An optional string specifying what you plan to do with the file. If omitted, you will get read access
to the file. In general the value consists of three parts:
• General mode, one of:
r Read access. The file must already exist. You will not be allowed to write to it.
w Write access. If there is no file by this name, a new one will be created.
Important
If there is an existing file, it will be deleted!
a Append access. If there is a file by this name, your initial position will be at the end of the file,
and you will be allowed to write (and read). If there is no file by this name, a new one will be
created. On some systems, all writes to a file with append mode are added at the end of the
file, regardless of the current file position.
The variable line will be set to each line of the file in turn. The line terminator character (if any) will
be present in that string.
Other aspects of files:
• Every open file has a current position. Initially, this will 0L if you opened it for reading or writing, or
the size of the file if you opened it with append access. Each write or read operation moves this position
by the amount read or written. You can also query or set the file position; see Section 17.1, “Methods
on file objects” (p. 55).
• Files may use a technique called buffering. Because physical access to some storage media (such as
disk drives) takes a relatively long time, Python may employ a storage area called a buffer as a holding
area for data being input or output.
For example, if you are writing data to a disk file, Python may keep the data in the file's buffer area
until the buffer is full and only then actually write it to the physical disk. There are various techniques
for controlling this behavior; see Section 17.1, “Methods on file objects” (p. 55).
f.seek(-4, 2)
F.tell()
This method returns the current file position relative to the beginning as a long value.
F.truncate([pos])
Remove any contents of F past position pos, which defaults to the current position.
F.write(s)
Write the contents of string s to file F. This operation will not add terminator characters; if you
want newlines in your file, include them in the string s.
F.writelines(S)
For a sequence S containing strings, write all those strings to F. No line terminators will be added;
you must provide them explicitly if you want them.
>>> x = None
>>> x
>>> print x
None
The value None is returned from any function that executes a return statement with no value, or any
function after it executes its last line if that last line is not a return statement.
However, Python also supports mechanisms for lazy evaluation: a piece of program that acts like a se-
quence, but produces its contained values one at a time.
Keep in mind that the above code works exactly the same if celsiuses is an iterator (see Section 24.2,
“Iterators: Values that can produce a sequence of values” (p. 110)). You may find many uses for iterators
in your programs. For example, celsiuses might be a system that goes off and reads an actual ther-
mometer and returns the readings every ten seconds. In this application, the code above doesn't care
where celsiuses gets the values, it cares only about how to convert and print them.
The term duck typing comes from this quote. In programming terms, this means that the important 17
thing
about a value is what it can do, not its type. As the excellent Wikipedia article on duck typing says,
“Simply stated: provided you can perform the job, we don't care who your parents are.”
One common example of duck typing is in the Python term “file-like object”. If you open a file for
reading using the open() function, you get back a value of type file:
Let's suppose that you write a function called numberIt() that takes a readable file as an argument
and prints the lines from a file preceded by five-digit line numbers. Here's the function and an example
of its use:
The way you have written the numberIt() function, it works for files, but it also works for any iterable.
Thus, when you see the statement that some Python feature works with a “file-like object,” that means
that the object must have an interface like that of the file type; Python doesn't care about the type,
just the operations that it supports.
In practice, the enumerate() function works with any iterable, so your function will also work with
any iterable:
17
http://en.wikipedia.org/wiki/Duck_typing
So in Python when we say that we expect some value to have an interface, we mean that it must provide
certain methods or functions, but the actual type of the value is immaterial.
More formally, when we say that a value supports the iterable interface, that value must provide either
of the following features:
• A .__getitem__() method as described in Section 26.3.16, “__getitem__(): Get one item from
a sequence or mapping” (p. 133).
• A .__iter__() method as described in Section 26.3.17, “__iter__(): Create an iterator” (p. 133).
abs(x)
>>> abs(-33)
33
>>> abs(33)
33
>>> abs(0)
0
>>> abs(complex(1,5))
5.0990195135927845
18
19
http://en.wikipedia.org/wiki/ASCII
http://docs.python.org/library/locale.html
>>>
bin(7)
'0b111'
>>> bin(257)
'0b100000001'
>>> bool(0)
False
>>> bool(0.0)
False
>>> bool(0L)
False
>>> bool(0j)
False
>>> bool('')
False
>>> bool([])
>>> chr(65)
'A'
>>> chr(0)
'\x00'
cmp(x, y)
The built-in cmp() function will typically return only the values -1, 0, or 1. However, there are other
places that expect functions with the same calling sequence, and those functions may return other values.
It is best to observe only the sign of the result.
>>> cmp(2,5)
-1
>>> cmp(5,5)
0
complex(R, I)
That is, there may be one optional positional argument or any number of keyword arguments.
• If you supply no arguments, you get a new, empty dictionary.
• If one positional argument is supplied, it must be a iterable containing two-element iterables. Each
two-element iterable becomes one key-value pair of the result.
>>> dict()
{}
>>> dict ( [ (0, 'stop'), (1, 'go') ] )
{0: 'stop', 1: 'go'}
• If you supply any keyword arguments, each keyword becomes a key in the resulting dictionary, and
that argument's value becomes the corresponding value of that key-value pair.
Sometimes you want both the quotient and remainder when dividing x by y. This function returns a
tuple (q, r), where q is the quotient and r is the remainder.
If either x or y is a float, the returned value q is the whole part of the quotient, and the returned r is
computed as x-(r*d).
Examples:
>>> divmod(13, 5)
(2, 3)
>>> divmod(1.6, 0.5)
(3.0, 0.10000000000000009)
If you would like the numbers to start at a different origin, pass that origin as the second argument to
the enumerate() function. You will still get all the elements of the sequence, but the numbers will
start at the value you provide. (Python 2.6 and later versions only.)
filter(f, S)
The filtering function f is the first argument. It is applied to every element of some iterable S. The result
is a new sequence containing only those elements x of S for which f(x) returned True.
• If f is a string or tuple, the result has the same type, otherwise the result is a list.
• If f is None, you get a sequence of the true elements of S. In this case, the filtering function is effectively
the bool() function.
>>> float()
0.0
>>> float(17)
17.0
>>> float(' 3.1415 ')
3.1415000000000002
>>> print float('6.0221418e23')
6.0221418e+23
>>> float('142x')
format(value[, spec])
• For built-in types, the spec has the syntax as that described in Section 9.4, “The string .format()
method” (p. 23) between “:” and the closing “}”.
>>> x = 34.56
>>> format(x, '9.4f')
' 34.5600'
>>> '{0:9.4f}'.format(x)
' 34.5600'
• You can define how this function works for a user-defined class by defining the special method de-
scribed in Section 26.3.13, “__format__: Implement the format() function” (p. 132).
• If the spec argument is omitted, the result is the same as str(value).
frozenset(S)
This function converts an existing iterable S to a frozenset. The argument is optional; if omitted, you
get a frozen empty set.
>>> frozenset()
frozenset([])
>>> frozenset('aeiou')
frozenset(['a', 'i', 'e', 'u', 'o'])
>>> frozenset([0, 0, 0, 44, 0, 44, 18])
frozenset([0, 18, 44])
For more information, see Section 15, “Types set and frozenset: Set types” (p. 43).
>>> hex(15)
'0xf'
>>> hex(255)
'0xff'
>>> hex(256)
'0x100'
>>> hex(1325178541275812780L)
'0x1263fadcb8b713ac'
int(ns)
where ns is the value to be converted. If ns is a float, the value will be truncated, discarding the
fraction.
If you want to convert a character string s, expressed in a radix (base) other than 10, to an int, use this
form, where b is an integer in the range [2, 36] that specifies the radix.
int(s, b)
Examples:
>>> int(43L)
43
>>> int(True)
1
>>> int(False)
0
>>> int(43.89)
43
>>> int("69")
69
>>> int('77', 8)
63
>>> int('7ff', 16)
2047
>>> int('10101', 2)
21
input([prompt])
If you supply a string as the optional prompt argument, that string will be written to the user before
the input is read.
In any case, the result is the value of the expression. Of course, if the user types something that isn't a
valid Python expression, the function will raise an exception.
>>> input()
2+2
4
>>> print "The answer was '{0}'.".format(input())
2+3*4
iter(s[, sentinel])
• If the sentinel argument is omitted, the first argument must be either a sequence value that imple-
ments the .__getitem__() method or an instance of a class that has the .__iter__() method.
• If you provide a sentinel argument, the s argument must be callable. The iterator returned will
call s() with no arguments and generate the values it returns until the return value equals sentinel,
at which point it will raise StopIteration.
>>> len('')
0
>>> len ( [23, 47, 'hike'] )
3
>>> len({1: 'foot', 2:'shoulder', 'feather': 'rare'})
3
>>> long(43)
43L
>>> long(43.889)
43L
>>> long('12345678901234567890123457890')
12345678901234567890123457890L
>>> long('potrzebie456', 36)
3381314581245790842L
map(f, S)
To apply a function with multiple arguments to a set of sequences, just provide multiple iterables as
arguments, like this.
If you pass None as the first argument, Python uses the identity function to build the resulting list. This
is useful if you want to build a list of tuples containing items from two or more iterables.
>>> max('blimey')
'y'
>>> max ( [-505, -575, -144, -288] )
-144
>>> max([])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: max() arg is an empty sequence
You can also pass multiple arguments, and max() will return the largest. In the example below,
'cheddar' is the largest because lowercase letters have higher codes than uppercase letters.
If you want to redefine the comparison function, you may provide a keyword argument key=f, where
f is a function that takes one argument and returns a value suitable for comparisons. In this example,
we use the .upper() method of the str class to compare the uppercased strings, then return the ori-
ginal string whose uppercased value is largest.
>>> min('blimey')
'b'
>>> min ( [-505, -575, -144, -288] )
-575
You may also pass multiple arguments, and the min() function will return the smallest.
If you would like to use a different function to define the ordering, specify that function as a keyword
argument key=f, where f is a function that takes one argument and returns a value suitable for com-
parisons. In this example, we want to order the values based on their inverse.
next(I[, default)
• If the iterator produces another value, that value is returned by this function.
• If the iterator is exhausted and you provide a default value, that value is returned.
• If the iterator is exhausted and you do not provide a default value, the next() function raises a
StopIteration exception.
Here is an example.
>>> it = iter(xrange(0,2))
>>> next(it, 'Done')
0
>>> next(it, 'Done')
1
>>> next(it, 'Done')
'Done'
>>> next(it)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> oct(0)
'0'
>>> oct(127)
'0177'
See also Section 9.4, “The string .format() method” (p. 23): octal conversion is supported by specifying
type code 'o'.
>>> ord('A')
65
>>> ord('\x00')
0
pow(x, y)
y
For integer arithmetic, the function also has a three-argument form that computes x %z, but more effi-
ciently than if you used that expression:
pow(x, y, z)
Examples:
>>> 2**4
16
>>> pow(2,4)
16
>>> pow(2.5, 4.5)
61.763235550163657
>>> (2**9)%3
2
>>> pow(2,9,3)
2
>>> range(4)
[0, 1, 2, 3]
>>> range(4,9)
[4, 5, 6, 7, 8]
>>> range(10,104,10)
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
raw_input(p)
The argument p is a prompt string that is written to standard output. Then a line is read from standard
input and returned as a string, without its trailing newline character.
If the user signals end of input (e.g., with Control-D under Unix), the function raises an EOFError ex-
ception.
reduce(f, S)
reduce(f, S, I)
The result depends on the number of elements in S, and whether the initial value I is supplied. Let's
look first at the case where argument I is not supplied.
• If S has only one element, the result is S[0].
• If S has two elements, the result is f(S[0], S[1]).
• If S has three elements, the result is f(f(S[0], S[1]), S[2]).
• If S has four or more elements, f is applied first to S[0] and S[1], then to that result and S[2], and
so on until all elements are reduced to a single value.
• If S is empty and no initial value was provided, the function raises a TypeError exception.
20
http://en.wikipedia.org/wiki/Fold_(higher-order_function)
>>> L=[22,44,88]
>>> backL = reversed(L)
>>> for i in backL:
... print i,
...
88 44 22
The allowable values for S include all the types described in Section 8, “Sequence types” (p. 11). It also
works for any class provided one of these two conditions is met:
• The method described in Section 26.3.20, “__reversed__(): Implement the reversed() func-
tion” (p. 134).
• If the class has no .__reversed__() method, reversed() will still work provided that instances
act like a sequence; that is, the class has a .__len__() method and a .__getitem__() method.
round(x)
The value is returned as a float. In the case that the fractional part of x is exactly one-half, the returned
value is the integer farther from zero. Examples:
You can also provide an optional second argument that specifies how many digits to retain after the
decimal.
set(S)
The optional argument S is any iterable; the return value is a new set instance containing the unique
values from S. When called with no arguments, this function returns a new, empty set. Examples:
For more information about sets, see Section 15, “Types set and frozenset: Set types” (p. 43).
The cmp, key, and reverse arguments are optional, and have the same meaning as in the .sort()
method of the list type (see Section 11.1, “Methods on lists” (p. 35)).
In the first example above, 'Zoe' precedes 'clue', because all uppercase letters are considered to be
less than all lowercase letters. The second example shows the use of a cmp argument to sort strings as
if they were all uppercase; the third example shows how to achieve the same result using the .upper()
method of the str class as the key argument. Note in the last line that the original list L is unchanged.
str(x)
For example:
>>> str(17)
'17'
>>> str({'boy': 'Relmond', 'girl': 'Wirdley'})
"{'boy': 'Relmond', 'girl': 'Wirdley'}"
For general information, see Section 9, “Type str: Strings of 8-bit characters” (p. 14).
sum(S)
sum(S, I)
In the second form, the summing process starts with the initial value I. Examples:
tuple(s)
The result will be a new tuple with the same elements as S in the same order. For general information,
see Section 12, “Type tuple: Immutable sequences” (p. 39).
To create an empty tuple, omit the argument. Examples:
>>> tuple()
()
>>> tuple ( ['swallow', 'coconut'] )
('swallow', 'coconut')
>>> tuple ( 'shrubbery' )
('s', 'h', 'r', 'u', 'b', 'b', 'e', 'r', 'y')
>>> tuple ( ['singleton'] )
('singleton',)
>>> type(i)
<type 'int'>
>>> type(i) is int
True
>>> type([2,4,8]) is list
True
>>> unichr(0)
u'\x00'
>>> unichr(ord('A'))
u'A'
>>> unicode('Pratt')
u'Pratt'
>>> unicode()
u''
Each Si must be in iterable. The result is a list [T0, T1, ...], where each Ti is the tuple (S0[i],
S1[i], S2[i], ...).
Here are some examples.
isinstance(s, basestring)
See Section 21.12, “isinstance(): Is a value an instance of some class or type?” (p. 84).
callable(x)
Class names can be called to create an instance of the class. Instances can be called if they define a
.__call__() special method; see Section 26.3.5, “__call__(): What to do when someone calls an
instance” (p. 130).
@classmethod
def methodName(cls, ...):
method body
• In some older versions of Python without the decorator syntax, you can still declare a class method
by placing a line after the method definition, at the same indentation level as the method's def
statement, having this form:
methodName = classmethod(methodName)
delattr(I, A)
For example, if an instance seabiscuit has a rider attribute, this statement would delete that attribute:
delattr(seabiscuit, 'rider')
If the instance has no such attribute, this function will raise an AttributeError exception.
>>> dir()
['__builtins__', '__doc__', '__name__']
>>> x=5; forkTail='Tyrannus'
>>> dir()
['__builtins__', '__doc__', '__name__', 'forkTail', 'x']
>>> print __doc__
None
>>> print __name__
__main__
>>> import math
>>> print math.__name__
math
>>> cent=100
>>> eval('cent**3')
1000000
If you want to evaluate the expression using different name environments, refer to the official document-
21
ation . For related features, see also Section 21.7, “execfile(): Execute a Python source file” (p. 82)
and Section 22.4, “The exec statement: Execute Python source code” (p. 94).
execfile(F)
The function returns None. For additional features22that allow you to control the environment of the
executed statements, see the official documentation .
>>> class C:
... def __init__(self, flavor):
... self.flavor = flavor
...
>>> c=C('garlicky')
>>> getattr(c, 'flavor')
'garlicky'
>>> getattr(c, 'aroma', 'bland')
'bland'
>>> getattr(c, 'aroma')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: C instance has no attribute 'aroma'
21
22
http://docs.python.org/library/functions.html
http://docs.python.org/library/functions.html
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main_
_', '__doc__': None}
>>> finch = 'Fleep'
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main_
_', '__doc__': None, 'finch': 'Fleep'}
The special name __builtins__ is bound to a module; name __name__ is bound to the string
'__main__'; and __doc__ is bound to None. Note that defining a new name adds an entry to the
result of globals().
hasattr(I, s)
If this function returns True, you can be sure that the instance has an attribute named s. However, if
it returns False, attempts to access an attribute may still succeed, if the class provides dynamic attributes;
see Section 26.3.14, “__getattr__(): Handle a reference to an unknown attribute” (p. 133). Example:
>>> class C:
... def __init__(self, disc):
... self.disk = disc
...
>>> c=C('five')
>>> hasattr(c, 'disk')
True
>>> hasattr(c, 'disc')
False
>>> hasattr(c, 'jukebox')
False
>>> c.jukebox = 'Nine'
>>> hasattr(c, 'jukebox')
True
>>> i = 20
>>> id(i)
137727456
isinstance(I, C)
The second argument may be a class name, a type object, or a tuple of class names and type objects. If
a tuple, the function will test the instance against each of the class names or type objects.
A most useful built-in Python class is basestring, which is the ancestor class of both str and unicode
types. It is intended for cases where you want to test whether something is a string but you don't care
whether it is str or unicode.
issubclass(C1, C2)
Examples:
For more information about the built-in basestring class, see Section 21.12, “isinstance(): Is a
value an instance of some class or type?” (p. 84).
For related functions, see Section 21.5, “dir(): Display a namespace's names” (p. 80) and Section 21.9,
“globals(): Dictionary of global name bindings” (p. 83).
class C(...):
def R(self):
...read method...
def W(self, value):
...write method...
def D(self):
...delete method...
p = property(R, W, D, doc)
...
C.p.__doc__
class C(object):
def __init__(self):
self.__x=None
def getx(self):
print "+++ getx()"
return self.__x
def setx(self, v):
print "+++ setx({0})".format(v)
self.__x = v
def delx(self):
print "+++ delx()"
del self.__x
x=property(getx, setx, delx, "Me property 'x'.")
>>> c=C()
>>> print c.x
+++ getx()
None
>>> print C.x.__doc__
Me property 'x'.
>>> c.x=15
+++ setx(15)
>>> c.x
+++ getx()
15
>>> del c.x
+++ delx()
>>> c.x
+++ getx()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in getx
AttributeError: 'C' object has no attribute '_C__x'
@property
def state(self):
'''The internal state property.'''
return self._state
In this example, not only will the .state() method be the getter for this property, but the document-
ation string '''The internal state property.''' will be stored as the documentation string
for the property.
Suppose further that you want to write a setter method that checks to make sure the argument is a
positive number less than or equal to 2. To use the built-in setter method to write your setter, give
the function the same name as the property, and decorate it with P.setter where P is the name of the
previously defined getter:
@state.setter
def state(self, k):
if not (0 <= k <= 2):
raise ValueError("Must be 0 through 2 inclusive!")
else:
self._state = k
@state.deleter
def state(self):
del self._state
reload(moduleName)
The moduleName is the actual name of the module, not a string containing its name. For example, if
you have imported a module like this:
import parrot
>>> s='Wensleydale'
>>> print s
Wensleydale
>>> print str(s)
Wensleydale
>>> print repr(s)
'Wensleydale'
>>> print `s`
'Wensleydale'
To specify the behavior of the repr() when it is applied to an instance of a user-defined class, see
Section 26.3.19, “__repr__(): String representation” (p. 134).
setattr(I, A, V)
Example:
As the last lines above show, you can use this function to create attributes that didn't even
23
exist before.
However, this is often considered bad style, as it violates the principle of encapsulation .
The result is a slice that is equivalent to start:limit:step. Use None to get the default value for
any of the three arguments.
Examples:
23
http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming)
@staticmethod
def methodName(...):
method body
An alternative is to place a line like this after the method's definition (at the same indentation level as
its def):
methodName = staticmethod(methodName)
24
http://docs.python.org/library/functions.html
Assignment Section 22.1, “The assignment statement: name = expression” (p. 91).
assert Section 22.2, “The assert statement: Verify preconditions” (p. 94).
break Section 23.2, “The break statement: Exit a for or while loop” (p. 100).
continue Section 23.3, “The continue statement: Jump to the next cycle of a for or while” (p. 100).
del Section 22.3, “The del statement: Delete a name or part of a value” (p. 94).
elif Section 23.5, “The if statement: Conditional execution” (p. 102) and Section 23.8, “The
try statement: Anticipate exceptions” (p. 104).
else Section 23.5, “The if statement: Conditional execution” (p. 102).
except Section 23.8, “The try statement: Anticipate exceptions” (p. 104).
exec Section 22.4, “The exec statement: Execute Python source code” (p. 94).
finally Section 23.8, “The try statement: Anticipate exceptions” (p. 104).
for Section 23.4, “The for statement: Iteration over a sequence” (p. 101).
from Section 22.6, “The import statement: Use a module” (p. 96).
global Section 22.5, “The global statement: Declare access to a global name” (p. 95).
if Section 23.5, “The if statement: Conditional execution” (p. 102).
import Section 22.6, “The import statement: Use a module” (p. 96).
pass Section 22.7, “The pass statement: Do nothing” (p. 97).
print Section 22.8, “The print statement: Display output values” (p. 97).
raise Section 23.6, “The raise statement: Cause an exception” (p. 103).
return Section 23.7, “The return statement: Exit a function or method” (p. 104).
try Section 23.8, “The try statement: Anticipate exceptions” (p. 104).
yield Section 23.10, “The yield statement: Generate one result from a generator” (p. 107).
In most cases, there will be one target that is a name. Python will evaluate the expression, reducing
it to a single value, and then bind that name to the that value.
A binding is an association between a name and a value. It is important to note that in Python, unlike
many other languages, names themselves are not associated with a specific type. A name is just a label,
and it can be bound to any value of any type at any time. In this example, name x is bound first to an
int value 5, then to a str value 'Some string'.
>>> x = 5
>>> x
5
>>> x = 'Some string'
>>> print x
Some string
If a target name was already bound to a value, the name is unbound from that value before it is rebound
to the new value. For each value in a running program, Python keeps track of how many names are
bound to that value. When the value has no more names bound to it, the value's memory is automatically
recycled. If the value is an instance of a class, its destructor may be called; see Section 26.3.8, “__del__():
Destructor” (p. 131).
There are several other forms of assignment statement.
n0 = n1 = ... = expression
If you supply multiple target names, each target will be assigned the value of the expression.
Example:
>>> i = j = errorCount = 0
>>> i
0
>>> j
0
>>> errorCount
0
This feature, called “unpacking,” generalizes to arbritrarily nested sequences within sequences.
You may group targets inside parentheses (...) or brackets [...] to show the levels of nesting.
Here is an example:
All the assignments are effectively simultaneous. Therefore, you can safely exchange the values of
two variables using a statement like this:
v1, v2 = v2, v1
Examples:
name[i] = expression
If name is an iterable, the expression i must evaluate to an integer. The element after position i is
replaced by the value of the expression.
>>> L = range(6)
>>> L
[0, 1, 2, 3, 4, 5]
>>> L[2]
2
>>> L[2] = 888
>>> L
[0, 1, 888, 3, 4, 5]
If name is a dictionary (or other mapping), and name does not have a key-value pair whose key
equals index, a new key-value pair is added to name with key i and value expression.
>>> L=range(6)
>>> L
[0, 1, 2, 3, 4, 5]
>>> L[2:4]
[2, 3]
>>> L[2:4] = [111, 222, 333, 444, 555]
>>> L
[0, 1, 111, 222, 333, 444, 555, 4, 5]
>>> L[3]
222
>>> L[3:3]
[]
>>> L[3:3] = [41.0, 42.0, 43.0]
>>> L
[0, 1, 111, 41.0, 42.0, 43.0, 222, 333, 444, 555, 4, 5]
>>> L[4:7]
[42.0, 43.0, 222]
>>> L[4:7] = ()
>>> L
[0, 1, 111, 41.0, 333, 444, 555, 4, 5]
Note
The “=” signs in an assignment is not an operator, as it is in some other languages. You cannot assign
a value to a name inside an expression; an assignment statement must stand alone.
>>> a = 5 + (a=7)
File "<stdin>", line 1
a = 5 + (a=7)
^
SyntaxError: invalid syntax
Python also supports augmented assignment. In this form, you may place certain operators before the “=”.
Here is the general form:
An assignment of this general form has the same semantics as this form:
>>> i = 1
>>> i += 3
>>> i
4
>>> i *= 5
>>> i
20
assert e1
assert e1, e2
where e1 is some condition that should be true. If the condition is false, Python raises an Assertion-
Error exception (see Section 25, “Exceptions: Error signaling and handling” (p. 113)).
If a second expression e2 is provided, the value of that expression is passed with the exception.
Assertion checking can be disabled by running Python with the -O (optimize) option.
del i, j
would delete the sixth element of list L and the last two elements of list M.
• One entry in a dictionary. For example, if D is a dictionary,
del D['color']
Some conversational examples may help make this clear. Suppose you define a global variable x; you
can use that name inside a function.
>>> x = 5
>>> def show1():
... print x
...
>>> show1()
5
However, if you assign a value to x inside the function, the name x is now local to the function. It is
said to shadow the global variable with the same name, and any changes to the value associated with
that name inside the function will operate on a local copy, and will not affect the value of the global
variable x.
>>> x = 5
>>> def show2():
... x = 42
... print x
...
>>> show2()
42
>>> x
5
But if you actually do want to change the value of the global variable inside the function, just declare
it global like this:
>>> x = 5
>>> def show3():
... global x
... x = 42
... print x
...
>>> show3()
>>> x = 5
>>> def show4():
... print x, "Before"
... x = 42
... print x, "After"
...
>>> show4()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in show4
UnboundLocalError: local variable 'x' referenced before assignment
Because the line “x = 42” changes the value of x, and because it is not declared as a global, execution
fails because the value of the local variable x is used before that variable has had a value assigned to it.
The first form imports all the items from the module named moduleName. If you want to import only
specific items, use the second form, and enumerate the names you want from that module.
• The import statement makes an entire module's content available to you as a separate namespace.
To refer to some item named N in a module named M, use the dot notation, M.N.
Here is the general form:
If you want to use some module M in this way, but you want to change the name to some different
name A, use this form:
import M as A
If you wanted only the sqrt function and the variable pi, this statement would do the job:
Suppose your program already used the name math for something else, but you still want to use functions
from the math module. You can import it under a different name like this:
while arr():
pass
Each thing must be a string, or a value that can be converted into a string by the str() function (see
Section 20.40, “str(): Convert to str type” (p. 76)). These strings are written to the standard output
stream, with one space between each value. A print statement by itself prints an empty line.
Normally, a newline is printed after the last value. However, you can suppress this behavior by appending
a comma to the end of the list. For example, this statement:
would print the string followed by one space and leave the cursor at the end of that line.
args
One or more positional arguments whose values are to be printed.
sep
By default, consecutive values are separated by one space. You may specify a different separator
string using this keyword argument.
end
By default, a newline ("\n") is written after the last value in args. You may use this keywoard
argument to specify a different line terminator, or no terminator at all.
file
Output normally goes to the standard output stream (sys.stdout). To divert the output to another
writeable file, use this keyword argument.
Here's an example. Suppose you are writing three strings named clan, moiety, and distro to a
writeable file named spreader, and you want to separate the fields with tab ("\t") characters, and
25
use ASCII CR, Carriage Return ("\r"), as the line terminator. Your call to the print() function
would go something like this:
25
http://en.wikipedia.org/wiki/ASCII
if i < 0:
print "i is negative"
else:
print "i is nonnegative"
if i < 10:
print "i has one digit"
else:
print "i has multiple digits"
If you prefer a more horizontal style, you can always place statements after the colon (:) of a compound
statement, and you can place multiple statements on a line by separating them with semicolons (;).
Example:
You can't mix the block style with the horizontal style: the consequence of an if or else must either
be on the same line or in a block, never both.
break
Here's an example.
Normally this loop would be executed six times, once for each value in the list, but the break statement
gets executed when i is set to an even value.
23.3. The continue statement: Jump to the next cycle of a for or while
Use a continue statement inside a for or while loop when you want to jump directly back to the
top of the loop and go around again.
• If used inside a while loop, the loop's condition expression is evaluated again. If the condition is
False, the loop is terminated; if the condition is True, the loop is executed again.
• Inside a for loop, a continue statement goes back to the top of the loop. If there are any values re-
maining in the iterable that controls the loop, the loop variable is set to the next value in the iterable,
and the loop body is entered.
If the continue is executed during the last pass through the loop, control goes to the statement after
the end of the loop.
Examples:
>>> i = 0
>>> while i < 10:
... print i,
... i += 1
... if (i%3) != 0:
... continue
... print "num",
...
0 1 2 num 3 4 5 num 6 7 8 num 9
>>> for i in range(10):
... print i,
... if (i%4) != 0:
... continue
... print "whee",
...
0 whee 1 2 3 4 whee 5 6 7 8 whee 9
100 Python 2.7 quick reference New Mexico Tech Computer Center
23.4. The for statement: Iteration over a sequence
Use a for statement to execute a block of statements repeatedly. Here is the general form. (For the
definition of a block, see Section 23.1, “Python's block structure” (p. 99).)
for V in S:
B
The block is executed once for each value in S. During each execution of the block, V is set to the corres-
ponding value of S in turn. Example:
In general, you can use any number of induction variables. In this case, the members of the controlling
iterable must themselves be iterables, which are unpacked into the induction variables in the same way
as sequence unpacking as described in Section 22.1, “The assignment statement: name = expres-
sion” (p. 91). Here is an example.
You can change the induction variable inside the loop, but during the next pass through the loop, it will
be set to the next element of the controlling iterable normally. Modifying the controlling iterable itself
won't change anything; Python makes a copy of it before starting the loop.
New Mexico Tech Computer Center Python 2.7 quick reference 101
... print "After:", i
...
Before: 0 After: 1000
Before: 1 After: 1001
Before: 2 After: 1002
Before: 3 After: 1003
>>> L = [7, 6, 1912]
>>> for n in L:
... L = [44, 55]
... print n
...
7
6
1912
if E0:
B0
elif E1:
B1
elif ...:
...
else:
Bf
An if construct may have zero or more elif clauses. The else clause is also optional.
Examples:
102 Python 2.7 quick reference New Mexico Tech Computer Center
it's one 1
it's two 2
many 3
many 4
>>> if 2 > 3: print "Huh?"
...
>>> if 2 > 3: print "Huh?"
... else: print "Oh, good."
...
Oh, good.
>>> if 2 > 3: print "Huh?"
... elif 2 == 2: print "Oh."
...
Oh.
raise
raise E1
raise E1, E2
The first form is equivalent to “raise None,None” and the second form is equivalent to “raise E1,
None”. Each form raises an exception of a given type and with a given value. The type and value depend
on how many expressions you provide:
raise E(...)
where E is some class derived from the built-in Exception class: you can use one of the built-in excep-
tions, or you can create your own exception classes.
For classes derived from Exception, the constructor takes one argument, an error message—that is,
a string explaining why the exception was raised. The resulting instance makes that message available
as an attribute named .message. Example:
New Mexico Tech Computer Center Python 2.7 quick reference 103
>>> try:
... raise ValueError('The day is too frabjous.')
... except ValueError as x:
... pass
...
>>> type(x)
<type 'exceptions.ValueError'>
>>> x.message
'The day is too frabjous.'
To create your own exceptions, write a class that inherits from Exception and passes its argument to
the parent constructor, as in this example.
return expression
return
In the first form, execution resumes at the point where the function or method was called, and the value
of the expression is substituted into the calling statement.
The second form is the equivalent of “return None”. (See Section 18, “None: The special placeholder
value” (p. 56).)
104 Python 2.7 quick reference New Mexico Tech Computer Center
try:
B0
except E1 [as v1]:
B1
except E2 [as v2]:
B2
except ...:
...
else:
Be
finally:
Bf
The else: and finally: blocks are optional. There must be at least one except block, but there may
be any number.
Here is a simplified description of the execution of a try block in general:
1. If B0 executes without raising any exceptions, the else block Be is executed, then the finally
block Bf.
2. If the execution of block B0 raises some exception with type E0, that type is compared against each
except clause until one of them matches the raised exception or there are no more except clauses.
The matching condition is slightly complicated: for some clause “except Ei as vi:”, expression
Ei is either an exception class or a tuple of exception classes.
• If Ei is a single class, it is considered a match if E0 is either the same class as Ei or a subclass of
Ei.
• If Ei is a tuple of exception classes, the raised exception is compared to each to see if it is the
same class or a subclass, as in the single-class case.
If multiple except clauses match, the first matching clause is said to handle the exception. The
corresponding variable vi (if present) is bound to the raised exception instance, and control passes
to the corresponding block Bi.
3. If there is a finally clause, it is executed, whether the exception was caught or not. If the exception
was not caught, it is re-raised after the end of the finally clause.
Examples:
>>> try:
... raise ValueError("Strike three!")
... except IOError as x:
... print "I/O error caught:", x
... except ValueError as x:
... print "Value error caught:", x
... except SyntaxError as x:
... print "Syntax error caught:", x
... else:
... print "This is the else clause"
... finally:
... print "This is the finally clause"
...
Value error caught: Strike three!
This is the finally clause
New Mexico Tech Computer Center Python 2.7 quick reference 105
>>> try:
... raise ValueError("Uncaught!")
... except IOError as x:
... print "I/O error:", x
... else:
... print "This is the else clause"
... finally:
... print "This is the finally clause"
...
This is the finally clause
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError: Uncaught!
>>> try:
... print "No exceptions raised"
... except ValueError as x:
... print "ValueError:", x
... else:
... print "This is the else clause"
... finally:
... print "This is the finally clause"
...
No exceptions raised
This is the else clause
This is the finally clause
For those of you who are interested in the gory details, the fun begins when a second or even a third
exception is raised inside an except, else, or finally clause. The results are well-defined, and here
is a pseudocode description of the edge cases. In this procedure, we'll use two internal variables named
pending and detail.
1. Set pending to None.
2. Attempt to execute block B0. If this block raises an exception E0 with detail d0, set pending to E0
and set detail to d0.
3. If pending is None, go to Step 8 (p. 106).
4. Find the first block except Ei, vi: such that issubclass(E0, Ei ).
If there is no such match, go to Step 10 (p. 106).
5. Set vi to detail.
6. Attempt to execute block Bi.
If this block raises some new exception En with detail dn, set pending to En and set detail to dn.
However, if block Bi executes without exception, set pending to None. In this case, the original
exception is said to have been caught or handled.
7. Go to Step 10 (p. 106).
8. If there is no else: clause, go to Step 10 (p. 106).
9. Attempt to execute the else: block Be.
If this block raises some new exception En with detail dn, set pending to En and set detail to dn.
10. If there is no finally: clause, proceed to Step 12 (p. 107).
106 Python 2.7 quick reference New Mexico Tech Computer Center
11. Attempt to execute the finally: block Ef.
If this block raises some new exception En with detail dn, set pending to En and set detail to dn.
12. If pending is not None, re-raise the exception as in this statement:
If pending is None, fall through to the statement following the try: block.
Starting with version 2.6, Python now was a with statement that executes a block using a context
manager. Here is the general form, where B is the block to be executed.
with E[ as V]:
B
When the beat() function terminates (either normally or because it raised an exception), the file will
be closed (in the file.__exit__() method). If the function raised an exception, that exception will
then be re-raised.
Starting in Python 2.7, you can enclose a block in multiple context managers by repeating the “E[ as
V” parts of the statement. For example:
yield expression
New Mexico Tech Computer Center Python 2.7 quick reference 107
Unlike ordinary functions or methods that use the return statement to return a single value, a gener-
ator is a mechanism that produces a sequence of zero or more values. Each execution of a yield statement
produces an additional value. To signal the caller that there are no more values, use this raise statement:
raise StopIteration
As an example, here is a function that generates the sequence 0, 1, 2, ..., n-1, n, n-1, n-2, ..., 2, 1, 0.
def n(p0[=e0][,p1[=e1]]...[,*pv][,**pd]):
B
The name n of the function is followed by a pair of parentheses containing descriptions of the arguments
to the function. The block B is called the body of the function, and is executed when the function is called.
A function may have no arguments at all. If there are arguments to be passed to the function when it is
called, they must be declared in this order:
• A positional argument is a name that is not followed by an equal sign (=) and default value.
• A keyword argument is followed by an equal sign and an expression that gives its default value.
If a function has both positional arguments and keyword arguments, all positional arguments must
precede all keyword arguments.
• If there is a *pv parameter, when the function is called that name is bound to a (possibly empty) tuple
of all positional arguments passed to the function that do not correspond to other positional or
keyword arguments in the def.
• If there is a **pd parameter, when the function is called that name is bound to a dictionary of all
keyword arguments passed to the function that do not appear in the function's def.
When you call a function, the argument values you pass to it must obey these rules:
• There are two kinds of arguments: positional (also called non-default arguments) and keyword (also
called default arguments). A positional argument is simply an expression, whose value is passed to
the argument.
A keyword argument has this form:
108 Python 2.7 quick reference New Mexico Tech Computer Center
name=expression
• All positional arguments in the function call (if any) must precede all keyword arguments (if any).
• You must supply at least as many positional arguments as the function expects.
• If you supply more positional arguments than the function expects, the extra arguments are matched
against keyword arguments in the order of their declaration in the def. Any additional keyword ar-
guments are set to their default values.
• You may supply arguments for keyword parameters in any order by using the form k=v, where k is
the keyword used in the declaration of that parameter and v is your desired argument.
• If you declare a parameter of the form “*name”, the caller can provide any number of additional
keyword arguments, and the name will be bound to a tuple containing those additional arguments.
New Mexico Tech Computer Center Python 2.7 quick reference 109
>>> def posish(i, j, k, *extras):
... print i,j,k,extras
...
>>> posish(38, 40, 42)
38 40 42 ()
>>> posish(44, 46, 48, 51, 57, 88)
44 46 48 (51, 57, 88)
• Similarly, you may declare a final parameter of the form “**name”. If the caller provides any keyword
arguments whose names do not match declared keyword arguments, that name will be bound to a
dictionary containing the additional keyword arguments as key-value pairs.
>>> x = 'lobster'
>>> y = 'Thermidor'
>>> def f(x):
... y = 'crevettes'
... print x, y
...
>>> f('spam')
spam crevettes
>>> print x, y
lobster Thermidor
Keyword parameters have a special characteristic: their names are local to the function, but they are
also used to match keyword arguments when the function is called.
iter(S)
• The result of this function is an “iterator object” that can be used in a for statement.
110 Python 2.7 quick reference New Mexico Tech Computer Center
>>> continents = ('AF', 'AS', 'EU', 'AU', 'AN', 'SA', 'NA')
>>> worldWalker = iter(continents)
>>> type(worldWalker)
<type 'tupleiterator'>
>>> for landMass in worldWalker:
... print "Visit {0}.".format(landMass,)
...
Visit AF. Visit AS. Visit EU. Visit AU. Visit AN. Visit SA. Visit NA.
• All iterators have a .next() method that you can call to get the next element in the sequence. This
method takes no arguments. It returns the next element in the sequence, if any. When there are no
more elements, it raises a StopIteration exception.
yield e
New Mexico Tech Computer Center Python 2.7 quick reference 111
where the e is any Python expression.
The difference between yield and return is that when a return is executed, the function is con-
sidered finished with its execution, and all its current state diasppears.
By contrast, when a function executes a yield statement, execution of the function is expected to
resume just after that statement, at the point when the caller of the function needs the next generated
value.
• A generator signals that there are no more values by executing this statement:
raise StopIteration
For an example of a generator, see Section 23.10, “The yield statement: Generate one result from a
generator” (p. 107).
If you are writing a container class (that is, a class whose instances are containers for a set of values),
and you want to define an iterator (see Section 26.3.17, “__iter__(): Create an iterator” (p. 133)), that
method can be a generator. Here is a small example. The constructor for class Bunch takes a sequence
of values and stores them in instance attribute .__stuffList. The iterator method .__iter__()
generates the elements of the sequence in order, except it wraps each of them in parentheses:
24.4. Decorators
The purpose of a Python decorator is to replace a function or method with a modified version at the time
it is defined. For example, the original way to declare a static method was like this:
Using Python's decorator syntax, you can get the same effect like this:
@staticmethod
def someMethod(x, y):
...
112 Python 2.7 quick reference New Mexico Tech Computer Center
In general, a function or method may be preceded by any number of decorator expressions, and you
may also provide arguments to the decorators.
• If a function f is preceded by a decorator expression of the form “@d”, it is the equivalent of this code:
def f(...):
...
f = d(f)
• You may provide a parenthesized argument list after the name of your decorator. A decorator expres-
sion d(...) is the equivalent of this code:
def f(...):
...
f = d(...)(f)
First, the decorator is called with the argument list you provided. It must return a callable object. That
callable is then called with one argument, the decorated function. The name of the decorated function
is then bound to the returned value.
• If you provide multiple decorators, they are applied inside out, in sequence from the last to the first.
Here is an example of a function wrapped with two decorators, of which the second has additional ar-
guments:
@f1
@f2('Pewty')
def f0(...):
...
def f0(...):
...
f0 = f1 ( f2('Pewty') ( f0 ) )
First function f2 is called with one argument, the string 'Pewty'. The return value, which must be
callable, is then called with f0 as its argument. The return value from that call is then passed to f1.
Name f0 is then bound to the return value from the call to f1.
New Mexico Tech Computer Center Python 2.7 quick reference 113
Two values accompany the raising of an exception: the type and the value. For example, if a program
attempts to open an existing disk file but there is no such file, the type is IOError, and the value is
an instance of the IOError class that contains additional information about this error.
For more information about raising exceptions, see Section 23.6, “The raise statement: Cause an
exception” (p. 103).
• A program may choose to handle an exception. That is, a program may say that if a certain exception
or category of exceptions occurs in a specific block of code, Python must execute another code block
called a handler.
• A traceback is a message from Python showing where an exception occurred.
If you type a statement in conversational mode that causes an exception, you will see a short traceback
like this:
>>> x = 59 / 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
The above example showed that the offending statement was read from the standard input stream
(<stdin>).
When looking at a traceback, always look at the last line first. It tells you the general type of exception
(in the example, a ZeroDivisionError), followed by additional details (“integer division or modulo
by zero”).
If an exception occurs inside one or more function calls, the traceback will give a complete list of the
functions involved, from outermost to innermost. Again, the last line shows the exception type and
details.
114 Python 2.7 quick reference New Mexico Tech Computer Center
If there are multiple handlers for the exception in calling functions, the innermost will be used. If there
are no handlers for the exception in calling functions, you will get a stack traceback and the program
will terminate.
In the example above, function f() calls function g(), which in turn calls function h(). Function h()
raises a ValueError exception, but there is no try: block around it. Python looks to see if there is a
ValueError handler in g(), but there is not. Finally a handler for ValueError is found inside function
f(), so control resumes inside that handler. Note that no stack traceback is displayed, because the
ValueError exception was handled successfully.
>>> try:
... x = 1 / 0
New Mexico Tech Computer Center Python 2.7 quick reference 115
... except Exception, detail:
... print "Fail:", detail.message
...
Fail: integer division or modulo by zero
>>> try:
... x = noSuchVariable
... except Exception, detail:
... print "Fail:", detail.message
...
Fail: name 'noSuchVariable' is not defined
Warning
A catch-all handler like this can mask any number of errors. Do not use such a handler unless your
program must absolutely stay running.
• StopIteration: This is the exception that a generator must raise in order to signal that no more
generated values are available. See Section 24.3, “Generators: Functions that can produce a se-
quence of values” (p. 111).
• StandardError*: This is the base class for all built-in exceptions that are considered errors.
• ArithmeticError*: This is the base class for errors involving arithmetic computations.
• FloatingPointError: This is raised for arithmetic errors involving the float type.
• OverflowError: This is raised when the result of an operation cannot be represented.
• ZeroDivisionError: An attempt to divide by zero.
• AssertionError: An assert statement has failed. See Section 22.2, “The assert statement:
Verify preconditions” (p. 94).
• AttributeError: Failure to access an attribute.
• EnvironmentError*: Errors caused by functions outside of Python, such as the operating
system or peripheral devices.
• IOError: Errors related to file input or output.
• OSError: Errors signaled from the operating system.
• ImportError: Failure to import a module or to import items from a module.
• LookupError*: Superclass for errors caused by attempts to retrieve values from inside a
container class.
• IndexError: Attempt to retrieve a sequence member S[I], where I is not a valid index
in sequence S.
• KeyError: Attempt to retrieve a dictionary member D[K], where K is not a valid key in D.
• MemoryError: No more processor memory is available.
• NameError: Attempt to retrieve a name that is not defined.
• UnboundLocalError: Attempt to retrieve the value of a local name when no value has yet
been assigned to it.
• RuntimeError: An error that doesn't fit the other categories.
116 Python 2.7 quick reference New Mexico Tech Computer Center
• NotImplementedError: This is the preferred way for the virtual methods of a base class
to signal that they have not been replaced by a concrete method in a derived class.
• SyntaxError: Attempt to execute invalid Python source code.
• TypeError: Attempt to perform an operation on a value that does not support that operation,
such as trying to use exponentiation (**) on a string.
• ValueError: Caused by an operation that is performed on values of the correct type, but the
actual values are not valid. Example: taking a negative number to a fractional power.
To declare a class that does not inherit from any parent classes:
class C:
attribute definitions
...
The attribute definitions may include any number of def blocks that declare methods of the
class, and any number of class variable declarations.
Functionally, a class is really just a namespace. This namespace is just a place to store the pieces of the
class mechanisms: its methods and class variables.
• When Python reads a “class” declaration, it creates a new, empty namespace.
• When Python reads a “def” within a class, the name of that method is added to the class's namespace.
• If you define a class variable (that is, if you assign a value to a name inside a class but outside of any
methods of the class), the class variable's name and value are added to the namespace.
A brief conversational session may serve to illustrate these concepts. We'll make use of the built-in
function dir() to show the contents of the class's namespace; see Section 21.5, “dir(): Display a
namespace's names” (p. 80).
New Mexico Tech Computer Center Python 2.7 quick reference 117
<type 'NoneType'>
>>> Taunter.__module__
'__main__'
>>> Taunter.tauntCount 5
0
>>> Taunter.taunt 6
<unbound method Taunter.taunt>
1 When Python reads this line, it adds the name Taunter to the current local namespace, bound to
a new, empty namespace of type class.
2 Because this assignment takes place inside class Taunter but not inside a def, name tauntCount
becomes a class variable, bound to an int value of zero.
3 The next two lines define a method named taunt() within the class.
4 After we've finished entering the class definition, we use dir(Taunter) to see what names are
in the class's namespace. Variables __doc__ and __module__ are added automatically. Because
there was no documentation string in the class, __doc__ is bound to None. The __module__
variable has the value '__main__' because the class was entered in conversational mode.
5 To retrieve the value of a class variable V in class C, use the syntax “C.V”.
6 Name taunt in the class namespace is bound to an object of type “unbound method.” An unbound
method is a method (function) that is inside a class, but it is not associated with an instance of the
class.
An instance of a class is also a namespace. When the instance is created, all the names from the class's
namespace are copied into the instance namespace. From that point on, any changes made to the instance's
namespace do not affect the class namespace:
1 This class does not have a constructor (__init__) method, so when an instance is created, the
instance is a namespace with the same names as the class, and the same values.
118 Python 2.7 quick reference New Mexico Tech Computer Center
2 This line adds a new name where to the instance's namespace. It is bound to the string value
'crenelations'.
3 Note that the instance namespace now contains the name where, but the class's namespace is un-
changed.
4 To retrieve an attribute A of an instance I, use the syntax “I.A”. Initially, the instance variable has
the same value as the class variable of the same name.
5 Here, we add one to the instance variable tauntCount. The instance variable has the new value,
but the class variable tauntCount is unchanged.
6 Within the instance namespace, name taunt is now a bound method: it is associated with the instance
frenchy.
The next two lines show two equivalent methods of calling the taunt method.
7 Most method calls are bound method calls. To call a bound method B of an instance I, use the syntax
“I.B(...)”.
When a method B is bound to an instance I, the instance namespace I becomes the “self” argument
passed in to the method.
8 This line has the same effect as the previous line, but it is an unbound method call.
The expression “Taunter.taunt” retrieves the unbound method from the class definition. When
you call an unbound method, you must supply the “self” argument explicitly as the first argument.
Unbound method calls are not terribly common, but you will need to know about them when you
write the constructor for a derived class: you must call the parent class constructor as an unbound
call. Generally, if class D has parent class C, the derived class might look something like this:
class D(C):
def __init__(self, ...):
C.__init__(self, ...)
...
Namespaces are very much like dictionaries. Where a dictionary has unique keys, a namespace has
unique names. As a matter of fact, classes and instances have a special built-in attribute called
“__dict__” which, for most purposes, is the namespace as a dictionary. Continuing the examples
above:
>>> Taunter.__dict__
{'taunt': <function taunt at 0xb7ed002c>, '__module__': '__main__', 'tau
ntCount': 0, '__doc__': None}
>>> newFrenchy=Taunter()
>>> newFrenchy.__dict__
{}
>>> frenchy.__dict__
{'tauntCount': 1, 'where': 'crenelations'}
The class's dictionary has the four names we expect: the built-ins __module__ and __doc__, the class
variable tauntCount, and the method taunt.
But notice that the __dict__ attribute of the newly created instance newFrenchy does not have the
four names copied from the class. In fact, it is empty. And the __dict__ of instance frenchy contains
only the names that have changed since its instantation.
What actually happens when you refer to an attribute is that Python looks first in the instance's
__dict__; if the name is not found there, it looks in the __dict__ of the class. For derived classes,
Python will also search the __dict__ attributes of all the ancestor classes.
New Mexico Tech Computer Center Python 2.7 quick reference 119
So, in our example, a reference to frenchy.tauntCount would find the value of 1 in the instance. A
reference to newFrenchy.tauntCount would fail to find that name in newFrench.__dict__, but
would succeed in finding the class variable value 0 in Taunter.__dict__['tauntCount'].
Let's now look at the life cycles of classes in more detail. Due to improvements made in the language
since it was first introduced, Python has two kinds of classes, old-style and new-style. We encourage
you to use new-style classes; old-style classes will no longer be supported in the next major release,
Python 3000.
• All new-style classes must declare at least one parent class that is either the top-level class object
or some other class that derives ultimately from object. Such a class is said to be derived from, or
inherits from, the object class.
To declare a new-style class C that inherits from object:
class C(object):
...class methods and variables...
• An old-style class is one that doesn't declare a parent class at all, or a class that inherits from an existing
old-style class. The life cycle of an old-style class is described in Section 26.1, “Old-style classes” (p. 120).
In most respects, the two classes perform identically.
• We'll start by explaining old-style classes in Section 26.1, “Old-style classes” (p. 120).
• To benefit from the many functional improvements of new-style classes, and especially if you expect
to migrate your code to the major changes of Python 3.0, see Section 26.2, “Life cycle of a new-style
class” (p. 123).
class C:
...class methods and variables...
To create a class that inherits from one or more parent classes P1, P2, …:
As Python reads the definition of your class, it first creates a new, empty namespace called the class
namespace. You can access the class namespace directly as an attribute named __dict__, a dictionary
whose keys are the names in that namespace.
120 Python 2.7 quick reference New Mexico Tech Computer Center
As Python reads each method or class variable in your class declaration, it adds the name of that
method or variable to the class namespace.
The instance creation (also called instantiation) is handled by the __init__() or constructor method.
1. First Python creates the instance with an empty .__dict__ attribute that will contain the instance's
values.
2. Python then calls the constructor. The argument list for this call always has the special first argument
self (the instance), followed by whatever arguments were used in the initial call. The constructor
call is equivalent to this:
3. The constructor method then executes. Typically the constructor will set up new instance attributes
by assignments of this form:
self.name = expression
When the constructor finishes executing, the instance is returned to the constructor's caller.
>>> class C:
... def __init__(self, x):
... self.thingy = x
...
>>> c=C(42)
>>> c.thingy
42
>>> c.__dict__['thingy']
42
When you call a method M of an instance I in an expression of the form “I.M(...)”, this is considered
just another attribute “get” operation: the get operation I.M retrieves the method, and then that
method is called using the arguments inside the “(...)”.
New Mexico Tech Computer Center Python 2.7 quick reference 121
• To set an attribute means to give it a value. If there is an existing attribute with the same name, its old
value is discarded, and the attribute name is bound to the new value. The new value is stored in the
instance's .__dict__.
>>> c.thingy
42
>>> c.thingy = 58
>>> c.thingy
58
>>> c.__dict__['thingy']
58
• You can delete an attribute from an instance using a del statement (see Section 22.3, “The del state-
ment: Delete a name or part of a value” (p. 94)).
>>> c.thingy
58
>>> del c.thingy
>>> c.thingy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: C instance has no attribute 'thingy'
In addition to ordinary attributes and methods, your class can accept references to names that do not
exist in the instance or class namespace. You can define special methods that will be called when some
statement tries to get, set, or delete an attribute that isn't found in the instance's .__dict__. See Sec-
tion 26.3.14, “__getattr__(): Handle a reference to an unknown attribute” (p. 133), Section 26.3.21,
“__setattr__(): Intercept all attribute changes” (p. 134), and Section 26.3.9, “__delattr__(): Delete
an attribute” (p. 131).
If all else fails—if an attribute is not found in the instance's namespace and the class does not provide
a special method that handles the attribute reference—Python will raise an AttributeError exception.
The instance I replaces self as the first argument when setting up the arguments to be passed to
the method.
• The following form, called an unbound method call, is exactly equivalent to the above:
>>> class C:
... def __init__(self, x):
... self.x = x
... def show(self, y):
... print "*** ({0},{1}) ***".format(self.x, y)
122 Python 2.7 quick reference New Mexico Tech Computer Center
...
>>> c=C(42)
>>> c.show(58)
*** (42,58) ***
>>> C.show(c,58)
*** (42,58) ***
def __del__(self):
...cleanup statements...
C(*p, **k)
That is, it can have any number of positional arguments and any number of keyword arguments.
The equivalent call to the .__new__() method will look like this:
28
http://docs.python.org/reference/datamodel.html
New Mexico Tech Computer Center Python 2.7 quick reference 123
The first argument cls must be the class being created.
• The .__new__() method must call the parent class's .__new__() method to create the instance.
For example, if your class inherits directly from object, you must call:
object.__new__(cls)
However, if the .__new__() method does not return an instance of class cls, the constructor method
.__init__() will not be called. This allows the class more control over how new instances are created
and initialized. You can return an instance of an entirely different class if you like.
124 Python 2.7 quick reference New Mexico Tech Computer Center
26.2.3. Properties in new-style classes: Fine-grained attribute access control
The outline of attribute access in Section 26.2.2, “Attribute access control in new-style classes” (p. 124)
is slightly oversimplified in one respect. Any of the attribute search steps in this procedure may produce
a property rather than the actual attribute value.
A property is a special object that is produced by the property() function. For a discussion of the
three types of attribute access (get, set, and delete), the protocols for the accessor functions, and examples,
see Section 21.15, “property(): Create an access-controlled attribute” (p. 85).
Here's a small example. Suppose you want instances of class Point to contain nothing more than two
attributes named .x and .y:
When you declare a __slots__ attribute in a new-style class, instances will not have a .__dict__
attribute.
New Mexico Tech Computer Center Python 2.7 quick reference 125
__abs__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__add__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__and__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__call__ Section 26.3.5, “__call__(): What to do when someone calls an in-
stance” (p. 130)
__cmp__ Section 26.3.6, “__cmp__(): Generalized comparison” (p. 130)
__complex__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__contains__ Section 26.3.7, “__contains__(): The “in” and “not in” operators” (p. 131)
__del__ Section 26.3.8, “__del__(): Destructor” (p. 131)
__delattr__ Section 26.3.9, “__delattr__(): Delete an attribute” (p. 131)
__delitem__ Section 26.3.10, “__delitem__(): Delete one item of a sequence” (p. 131)
__divmod__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__div__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__divmod__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__enter__ Section 26.3.11, “__enter__: Context manager initialization” (p. 132)
__exit__ Section 26.3.12, “__exit__: Context manager cleanup” (p. 132)
__eq__ Section 26.3.1, “Rich comparison methods” (p. 128)
__floordiv__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__float__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__ge__ Section 26.3.1, “Rich comparison methods” (p. 128)
__getattr__ Section 26.3.14, “__getattr__(): Handle a reference to an unknown attrib-
ute” (p. 133)
__getattribute__ Section 26.3.15, “__getattribute__(): Intercept all attribute refer-
ences” (p. 133)
__getitem__ Section 26.3.16, “__getitem__(): Get one item from a sequence or map-
ping” (p. 133)
__gt__ Section 26.3.1, “Rich comparison methods” (p. 128)
__hex__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__iadd__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__iand__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__idiv__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__ifloordiv__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__ilshift__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__imod__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__imul__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__init__ Section 26, “Classes: Defining your own types” (p. 117)
__int__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__invert__ Section 26.3.3, “Unary operator special methods” (p. 129)
__ior__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__ipow__ Section 26.3.2, “Special methods for binary operators” (p. 129)
126 Python 2.7 quick reference New Mexico Tech Computer Center
__irshift__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__isub__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__iter__ Section 26.3.17, “__iter__(): Create an iterator” (p. 133)
__ixor__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__le__ Section 26.3.1, “Rich comparison methods” (p. 128)
__len__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__long__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__lshift__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__lt__ Section 26.3.1, “Rich comparison methods” (p. 128)
__mod__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__mul__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__ne__ Section 26.3.1, “Rich comparison methods” (p. 128)
__neg__ Section 26.3.3, “Unary operator special methods” (p. 129)
__new__ Section 26.2.1, “__new__(): New instance creation” (p. 123)
__nonzero__ Section 26.3.18, “__nonzero__(): True/false evaluation” (p. 134)
__oct__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__or__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__pos__ Section 26.3.3, “Unary operator special methods” (p. 129)
__pow__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__radd__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rand__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rdiv__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__repr__ Section 26.3.19, “__repr__(): String representation” (p. 134)
__reversed__ Section 26.3.20, “__reversed__(): Implement the reversed() func-
tion” (p. 134)
__rfloordiv__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rlshift__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rmod__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rmul__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__ror__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rpow__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rrshift__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rshift__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rsub__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__rxor__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__setattr__ Section 26.3.21, “__setattr__(): Intercept all attribute changes” (p. 134)
__setitem__ Section 26.3.22, “__setitem__(): Assign a value to one item of a se-
quence” (p. 134)
__str__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
New Mexico Tech Computer Center Python 2.7 quick reference 127
__sub__ Section 26.3.2, “Special methods for binary operators” (p. 129)
__unicode__ Section 26.3.4, “Special methods to emulate built-in functions” (p. 130)
__xor__ Section 26.3.2, “Special methods for binary operators” (p. 129)
The most important special method name is the class constructor, .__init__().
• For a general introduction to class constructors, see Section 26, “Classes: Defining your own
types” (p. 117).
• For old-style class constructors, see Section 26.1.2, “Instantiation of an old-style class: The constructor,
.__init__()” (p. 121).
• For new-style class constructors, see Section 26.2, “Life cycle of a new-style class” (p. 123).
Many special methods fall into broad categories:
• Section 26.3.1, “Rich comparison methods” (p. 128): for methods that implement comparisons such
as “<=” and “==”.
• Section 26.3.2, “Special methods for binary operators” (p. 129): for operators that operate on two op-
erands, such as “%”.
• Section 26.3.3, “Unary operator special methods” (p. 129): for operators that operate on a single operand,
such as negation, “-”.
• Section 26.3.4, “Special methods to emulate built-in functions” (p. 130): for classes that handle calls to
built-in functions such as “str()”.
The self argument is the left-hand operand and the other argument is the operand on the right hand
of the operator.
Each method must return a numeric value:
• A negative number indicates that self precedes other.
• Zero indicates that self and other are considered equal.
• A positive number indicates that other precedes self.
• If the method does not implement the operation, it may return the special value NotImplemented.
128 Python 2.7 quick reference New Mexico Tech Computer Center
26.3.2. Special methods for binary operators
Your class can define special methods with these names to tell Python how to handle binary operators
such as “*” or “%”. In each case, the calling sequence will look something like this:
The self argument is the left-hand operand, and the other argument is the right-hand operand. Your
method will return the result of the operation.
For each operator, you may supply up to three methods:
• The method in the first column performs the normal operation.
• The method in the second column is used when the left-hand operand does not support the given
operation and the operands have different types. In these methods, self is the right-hand operand
and other is the left-hand operand.
• The third column implements the “augmented assignment” operators such as “+=”. For example, for
method __iadd__(self, other), the method must perform the equivalent of “self += other”.
def __method__(self):
...
Operator Method
~ __invert__
- __neg__
+ __pos__
New Mexico Tech Computer Center Python 2.7 quick reference 129
26.3.4. Special methods to emulate built-in functions
You can define special methods that will handle calls to some of Python's built-in functions. The number
of arguments will be the same as for the built-in functions, except that self is always the first argument.
For example, a special method to handle calls to function divmod(x, y) will look like this:
In this method, the value of the first argument will be passed to self and the second argument to
other.
Function Method
abs __abs__
complex __complex__
divmod __divmod__
hex __hex__
int __int__
len __len__
long __long__
mod __mod__
oct __oct__
str __str__
unicode __unicode__
130 Python 2.7 quick reference New Mexico Tech Computer Center
• If the built-in cmp() function is called to compare an instance of a class to some other value, and the
class has a .__cmp__() method, that method is called to perform the comparison.
• When an instance appears on the left-hand side of a comparison (relational) operator, and that instance's
class has a the corresponding rich-comparison method (such as .__eq__() for the “==” operator;
see Section 26.3.1, “Rich comparison methods” (p. 128)), the rich-comparison method will be called
to perform the comparison. and, if so, that method is called.
The comparison operators are “<”, “<=”, “==”, “!=”, “>”, and “>=”.
However, if the class does not have the correct rich-comparison method, but it does have a
.__cmp__() method, that method will be called to evaluate the comparison.
The calling sequence is:
The convention for return values is the same one described in Section 20.8, “cmp(): Compare two val-
ues” (p. 62): negative if self precedes other, positive if other precedes self, zero if they are con-
sidered equal.
del s[i]
New Mexico Tech Computer Center Python 2.7 quick reference 131
Such a statement can be used either on objects that act like sequences, where i specifies the position of
the element to be deleted, or mapping objects (that is, dictionary-like objects), where i is the key of the
key-value pair to be deleted.
The calling sequence is:
eType
The type of the exception.
eValue
The exception instance raised.
eTrace
A traceback instance. For more information about stack traces, see the documentation for the
29
traceback module .
Your .__exit__() method's return value determines what happens next if the block raised an exception.
If it returns True, Python ignores the exception and proceeds with execution at a point just after the
with block. If you don't want your context manager to suppress the exception, don't re-raise it explicitly,
just return False and Python will then re-raise the exception.
29
http://docs.python.org/library/traceback.html
132 Python 2.7 quick reference New Mexico Tech Computer Center
The interpretation of the fmt argument is entirely up to you. The return value should be a string rep-
resentation of the instance.
If the call to the format() function does not provide a second argument, the fmt value passed to this
method will be an empty string.
The argument is the name of the desired attribute. The method must either return the attribute's value
or raise an AttributeError exception.
Compare Section 26.3.15, “__getattribute__(): Intercept all attribute references” (p. 133), which is
called even if the instance namespace does have an attribute with the desired name.
The method either returns the corresponding item or raises an appropriate exception: IndexError for
sequences or KeyError for mappings.
def __iter__(self):
...
New Mexico Tech Computer Center Python 2.7 quick reference 133
The return value must be an iterator. An iterator is any object that has a .next() method that returns
the next value in the sequence, or raises StopIteration when the sequence is exhausted. For more
information, see Section 24.2, “Iterators: Values that can produce a sequence of values” (p. 110).
def __nonzero__(self):
...
def __repr__(self):
...
The method sets the attribute given by the name argument to the value argument, or raises Attrib-
uteError if that operation is not permitted.
V[i] = expr
134 Python 2.7 quick reference New Mexico Tech Computer Center
def __setitem__(self, i, value):
...
For sequence-type objects, the i argument specifies the position in the sequence to be modified. For
mappings, the i argument is the key under which the value is to be stored.
@classmethod
def methodName(cls, ...):
...
When this method is called, the first argument (cls) will be the class containing methodName.
There are two ways to call a class method: using its class C, or an instance i. These two general forms
are:
C.methodName(...)
i.methodName(...)
In the first case, the class C is passed as the cls argument of the method. In the second case, the class
of instance i is passed as the cls argument.
New Mexico Tech Computer Center Python 2.7 quick reference 135
>>> Jal.whatClass(5)
cls=<class '__main__.Jal'> n=5
>>> eunice=Jal('green')
>>> eunice.whatClass(17)
cls=<class '__main__.Jal'> n=17
136 Python 2.7 quick reference New Mexico Tech Computer Center
pdb.runcall(func[,arg]...)
Calls a function under pdb control. The func must be either a function or a method. Arguments
after the first argument are passed to your function.
(pdb)
At this prompt, you can type any of the pdb commands discussed below. You can abbreviate any
command by omitting the characters in square brackets. For example, the where command can be ab-
breviated as simply w.
expr
Evaluate an expression expr and print its value.
!stmt
Execute a Python statement stmt. The “!” may be omitted if the statement does not resemble a
pdb command.
(empty line)
If you press Enter at the (pdb) prompt, the previous command is repeated. The list command
is an exception: an empty line entered after a list command shows you the next 11 lines after the
ones previously listed.
a[rgs]
Display the argument names and values to the currently executing function.
b[reak] [[filename:]lineno[,condition]]
The break command sets a breakpoint at some location in your program. If execution reaches a
breakpoint, execution will be suspended and you will get back to the (pdb) prompt.
This form of the command sets a breakpoint at a specific line in a source file. Specify the line number
within your source file as lineno; add the filename: if you are working with multiple source
files, or if your source file hasn't been loaded yet.
You can also specify a conditional breakpoint, that is, one that interrupts execution only if a given
condition evaluates as true. For example, the command break 92,i>5 would break at line 92
only when i is greater than 5.
When you set a breakpoint, pdb prints a “breakpoint number.” You will need to know this number
to clear the breakpoint.
b[reak] [function[,condition]]
This form of the break command sets a breakpoint on the first executable statement of the given
function.
c[ont[inue]]
Resume execution until the next breakpoint (if any).
cl[ear] [lineno]
If used without an argument, clears all breakpoints. To clear one breakpoint, give its breakpoint
number (see break above).
h[elp] [cmd]
Without an argument, prints a list of valid commands. Use the cmd argument to get help on command
cmd.
New Mexico Tech Computer Center Python 2.7 quick reference 137
l[ist] [begin[,end]]
Displays your Python source code. With no arguments, it shows 11 lines centered around the current
point of execution. The line about to be executed is marked with an arrow (->), and the letter B
appears at the beginning of lines with breakpoints set.
To look at a given range of source lines, use the begin argument to list 11 lines around that line
number, or provide the ending line number as an end argument. For example, the command list
50,65 would list lines 50-65.
n[ext]
Like step, but does not stop upon entry to a called function.
q[uit]
Exit pdb.
r[eturn]
Resume execution until the current function returns.
s[tep]
Single step: execute the current line. If any functions are called in the current line, pdb will break
upon entering the function.
tbreak
Same options and behavior as break, but the breakpoint is temporary, that is, it is removed after
the first time it is hit.
w[here]
Shows your current location in the program as a stack traceback, with an arrow (->) pointing to
the current stack frame.
30
31
http://docs.python.org/library/
http://docs.python.org/library/cmath.html
138 Python 2.7 quick reference New Mexico Tech Computer Center
acosh(x) Inverse hyperbolic cosine of x
asin(x) Arcsine of x.
asinh(x) Inverse hyperbolic sine of x
atan(x) Arctangent of x.
atanh(x) Inverse hyperbolic tangent of x
atan2(y,x) Angle whose slope is y/x, even if x is zero.
ceil(x) True ceiling function, defined as the smallest integer that is greater than or equal to
x. For example, ceil(3.9) yields 4.0, while ceil(-3.9) yields -3.0.
cos(x) Cosine of x, where x is expressed in radians.
cosh(x) Hyperbolic cosine of x.
degrees(x For x in radians, returns that angle in degrees.
erf(x) Error function.
erfc(x) Error function complement.
exp(x) e to the x power.
fabs(x Returns the absolute value of x as a float value.
factorial(n) Returns the factorial of n, which must be a nonnegative integer.
floor(x) True floor function, defined as the largest integer that is less than or equal to x. For
example, floor(3.9) is 3.0, and floor(-3.9) is -4.0.
fmod(x,y) Returns (x-int(x/y)*y).
frexp(x) For a float value x, returns a tuple (m, e) where m is the mantissa and e is the ex-
ponent. For x=0.0, it returns (0.0, 0); otherwise, abs(m) is a float in the half-
open interval [0.5, 1) and e is an integer, such that x == m*2**e.
gamma(x) Gamma function.
2 2
hypot(x,y) The square root of (x +y ).
ldexp(x, i) Returns x * (2**i). This is the inverse of frexp().
lgamma(x) Natural log of abs(gamma(x)).
log(x[, b) With one argument, returns the natural log of x. With the second argument, returns
the log of x to the base b.
log10(x) Common log (base 10) of x.
modf(x) Returns a tuple (f, i) where f is the fractional part of x, i is the integral part (as
a float), and both have the same sign as x.
radians(x) For x in degrees, returns that angle in radians.
sin(x) Sine of x.
sinh(x) Hyperbolic sine of x.
sqrt(x) Square root of x.
tan(x) Tangent of x.
tanh(x) Hyperbolic tangent of x.
New Mexico Tech Computer Center Python 2.7 quick reference 139
ascii_letters
A string containing all the letters from ascii_uppercase and ascii_lowercase.
ascii_lowercase 32
The characters that are considered lowercase letters in the ASCII character set, namely:
"abcdefghijklmnopqrstuvwxyz"
ascii_uppercase
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
The value of this constant does not depend on the locale setting; see Section 19.4, “What is the loc-
ale?” (p. 60).
digits
The decimal digits: "0123456789".
hexdigits
The hexadecimal digits: "0123456789abcdefABCDEF".
letters
A string containing all the characters that are considered letters in the current locale.
lowercase
A string containing all the characters that are considered lowercase letters in the current locale.
maketrans(s, t)
Builds a translation table to be used as the first argument to the .translate() string method.
The arguments s and t are two strings of the same length; the result is a translation table that will
convert each character of s to the corresponding character of t.
octdigits
The octal digits: "01234567".
printable
A string containing all the printable characters.
punctuation 33
All printable characters that are not letters or digits in the current locale. If ASCII is the locale's
current encoding, these characters are included:
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
uppercase
A string containing all the characters that are considered uppercase letters in the current locale.
May not be the same as ascii_uppercase
32
33
http://en.wikipedia.org/wiki/ASCII
http://en.wikipedia.org/wiki/ASCII
140 Python 2.7 quick reference New Mexico Tech Computer Center
whitespace
A string containing all the characters considered to be white space in the current locale. For ASCII
this will be:
"\t\n\x0b\x0c\r "
choice(S)
Returns a randomly selected element from an iterable S.
normalvariate(m,s)
Generate a normally distributed pseudorandom number with mean m and standard deviation s.
randint(x,y)
Returns a random integer in the closed interval [x,y]; that is, any result r will satisfy x <= r <=
y.
random()
Returns a random float in the half-open interval [0.0, 1.0); that is, for any result r, 0.0 <= r <
1.0.
randrange([start,]stop[,step])
Return a random element from the sequence range(start,stop,step) .
34
http://en.wikiquote.org/wiki/John_von_Neumann
New Mexico Tech Computer Center Python 2.7 quick reference 141
>>> from random import *
>>> for i in range(35): print randrange(4),
...
0 2 2 2 1 1 2 3 1 3 3 2 2 2 3 0 2 0 0 1 2 0 2 1 1 1 2 2 2 1 1 3 1 1 2
>>> for i in range(35): print randrange(1,5),
...
3 3 2 1 1 1 4 4 3 2 1 1 3 2 1 2 4 4 1 4 2 4 4 1 1 1 1 1 4 4 1 1 2 2 1
>>> range(2,18,5)
[2, 7, 12, 17]
>>> for i in range(28): print randrange(2,18,5),
...
12 2 7 2 17 17 7 7 12 17 17 2 7 17 12 7 7 12 17 17 7 12 7 7 7 7 7 7
shuffle(L)
Randomly permute the elements of a sequence L.
Here's an example. First we build a (small) deck of cards, using a list comprehension to build a list
of all possible combinations of three ranks (ace, king, queen) and four suits (spades, hearts, diamonds,
and clubs). Then we shuffle the deck twice and inspect the results.
uniform(x,y)
Returns a random float in the half-open interval [x,y); that is, each result r will satisfy x <= r <
y.
35
An assortment of other pseudorandom distributions is available. See the Python Library Reference for
details.
142 Python 2.7 quick reference New Mexico Tech Computer Center
A time tuple is a 9-tuple T with these elements, all integers:
New Mexico Tech Computer Center Python 2.7 quick reference 143
tzname
A 2-tuple (s, d) where s is the name of the non-DST time zone locally and d is the name of the local
DST time zone. For example, in Socorro, NM, you get ('MST', 'MDT').
Format codes for the strftime function include:
37
38
http://en.wikipedia.org/wiki/Y2k
http://docs.python.org/library/re.html
144 Python 2.7 quick reference New Mexico Tech Computer Center
^ Matches the start of the string.
$ Matches the end of the string.
r* Matches zero or more repetitions of regular expression r.
r+ Matches one or more repetitions of r.
r? Matches zero or one r.
r*? Non-greedy form of r*; matches as few characters as possible. The normal * operator is
greedy: it matches as much text as possible.
r+? Non-greedy form of r+.
r?? Non-greedy form of r?.
r{m,n} Matches from m to n repetitions of r. For example, r'x{3,5}' matches between three
and five copies of letter 'x'; r'(bl){4}' matches the string 'blblblbl'.
r{m,n}? Non-greedy version of the previous form.
[...] Matches one character from a set of characters. You can put all the allowable characters
inside the brackets, or use a-b to mean all characters from a to b inclusive. For example,
regular expression r'[abc]' will match either 'a', 'b', or 'c'. Pattern r'[0-9a-zA-
Z]' will match any single letter or digit.
[^...] Matches any character not in the given set.
rs Matches expression r followed by expression s.
r|s Matches either r or s.
(r) Matches r and forms it into a group that can be retrieved separately after a match; see
MatchObject, below. Groups are numbered starting from 1.
(?:r) Matches r but does not form a group for later retrieval.
(?P<n>r) Matches r and forms it into a named group, with name n, for later retrieval.
(?P=n) Matches whatever string matched an earlier (?P<n>r) group.
(?#...) Comment: the “...” portion is ignored and may contain a comment.
(?=...) The “...” portion must be matched, but is not consumed by the match. This is sometimes
called a lookahead match. For example, r'a(?=bcd)' matches the string 'abcd' but
not the string 'abcxyz'. Compared to using r'abcd' as the regular expression, the
difference is that in this case the matched portion would be 'a' and not 'abcd'.
(?!...) This is similar to the (?=...): it specifies a regular expression that must not match, but
does not consume any characters. For example, r'a(?!bcd)' would match 'axyz',
and return 'a' as the matched portion; but it would not match 'abcdef'. You could
call it a negative lookahead match.
The special sequences in the table below are recognized. However, many of them function in ways that
depend on the locale; see Section 19.4, “What is the locale?” (p. 60). For example, the r'\s' sequence
matches characters that are considered whitespace in the current locale.
\n Matches the same text as a group that matched earlier, where n is the number of that group. For
example, r'([a-zA-Z]+):\1' matches the string "foo:foo".
\A Matches only at the start of the string.
\b Matches the empty string but only at the start or end of a word (where a word is set off by
whitespace or a non-alphanumeric character). For example, r'foo\b' would match "foo" but
not "foot".
New Mexico Tech Computer Center Python 2.7 quick reference 145
\B Matches the empty string when not at the start or end of a word.
\d Matches any digit.
\D Matches any non-digit.
\s Matches any whitespace character.
\S Matches any non-whitespace character.
\w Matches any alphanumeric character plus the underbar '_'.
\W Matches any non-alphanumeric character.
\Z Matches only at the end of the string.
\\ Matches a backslash (\) character.
re.match(r,s)
However, if you will be matching the same regular expression many times, the performance will be
better if you compile the regular expression like this:
re.compile(r)
The re.compile() function returns a compiled regular expression object. You can then check a string
s for matching by using the .match(s) method on that object.
Here are the functions in module re:
compile(r[,f])
Compile regular expression r. This function returns a compiled regular expression object; see Sec-
tion 28.5.3, “Compiled regular expression objects” (p. 147). To get case-insensitive matching, use
re.I as the f argument.
39
There are other flags that may be passed to the f argument; see the Python
Library Reference .
match(r,s[,f])
If r matches the start of string s, return a MatchObject (see below), otherwise return None.
search(r,s[,f])
Like the match() method, but matches r anywhere in s, not just at the beginning.
split(r,s[,maxsplit=m])
Splits string s into pieces where pattern r occurs. If r does not contain groups, returns a list of the
parts of s that match r, in order. If r contains groups, returns a list containing all the characters
from s, with parts matching r in separate elements from the non-matching parts. If the m argument
is given, it specifies the maximum number of pieces that will be split, and the leftovers will be re-
turned as an extra string at the end of the list.
sub(r,R,s[,count=c])
Replace the leftmost non-overlapping parts of s that match r using R; returns s if there is no match.
The R argument can be a string or a function that takes one MatchObject argument and returns
the string to be substituted. If the c argument is supplied (defaulting to 0), no more than c replace-
ments are done, where a value of 0 means do them all.
39
http://docs.python.org/library/re.html
146 Python 2.7 quick reference New Mexico Tech Computer Center
28.5.3. Compiled regular expression objects
Compiled regular expression objects returned by re.compile() have these methods:
.match(s[,[ps][,pe]])
If the start of string s matches, return a MatchObject; if there is no match, return None. If ps is
given, it specifies the index within s where matching is to start; this defaults to 0. If pe is given, it
specifies the maximum length of s that can be used in matching.
.pattern
The string from which this object was compiled.
.search(s[,[ps][,pe]])
Like match(), but matches anywhere in s.
.split(s[,maxsplit=m])
Like re.split().
.sub(R,s[,count=c])
Like re.sub().
New Mexico Tech Computer Center Python 2.7 quick reference 147
.lastgroup
Holds the name of the last named group (using the (?P<n>r) construct) that matched. It will be
None if no named groups matched, or if the last group that matched was a numbered group and
not a named group.
.lastindex
Holds the index of the last group that matched, or None if no groups matched.
.pos
The effective ps value passed to .match() or .search().
.re
The regular expression object used to produce this MatchObject.
.span([n])
Returns a 2-tuple (m.start(n),m.end(n)).
.start([n])
Returns the location where a match started. If no argument is given, returns the index within the
string where the entire match started. If an argument n is given, returns the index of the start of the
match for the nth group.
.string
The s argument passed to .match() or .search().
import sys
sys.path.insert(0, "/u/dora/python/lib")
platform
A string identifying the software architecture.
stderr
The standard error stream as a file object.
148 Python 2.7 quick reference New Mexico Tech Computer Center
stdin
The standard input stream as a file object.
stdout
The standard output stream as a file object.
40
http://docs.python.org/library/grp.html
New Mexico Tech Computer Center Python 2.7 quick reference 149
getpid()
Returns the current process's process ID.
getppid()
Returns the parent process's PID (process ID).
getuid()
41
Returns the current process's user ID. To decode user IDs, see the pwd standard module .
kill(p,s)
Send signal s to the process whose process ID is p.
link(s,d)
Create a hard link to s and call the link d.
listdir(p)
Return a list of the names of the files in the directory whose pathname is p. This list will never
contain the special entries '.' and '..' for the current and parent directories. The entries may
not be in any particular order.
lstat(p)
Like stat(), but if p is a link, you will get the status tuple for the link itself, rather than the file it
points at.
makedirs(p[, mode])
Works like mkdir(), but will also create any intermediate directories between existing directories
and the desired new directory.
mkdir(p[,m])
Create a directory at pathname p. You may optionally specify permissions m; see module stat below
for the interpretation of permission values.
mkfifo(p,m)
Create a named pipe with name p and open mode m. The server side of the pipe will open it for
reading, and the client side for writing. This function does not actually open the fifo, it just creates
the rendezvous point.
nice(i)
Renice (change the priority) of the current process by adding i to its current priority.
readlink(p)
If p is the pathname to a soft (symbolic) link, this function returns the pathname to which that link
points.
remove(p)
Removes the file with pathname p, as in the Unix rm command. Raises OSError if it fails.
removedirs(p)
Similar to remove(), but also removes any other parent directory in the path that has no other
children.
rename(po, pn)
Rename path po to pn.
rmdir(p)
Remove the directory at path p.
41
http://docs.python.org/library/pwd.html
150 Python 2.7 quick reference New Mexico Tech Computer Center
stat(p)
Return a status tuple describing the file or directory at pathname p. See module stat, below, for
the interpretation of a status tuple. If p is a link, you will get the status tuple of the file to which p
is linked.
symlink(s,d)
Create a symbolic link to path s, and call the link d.
system(c)
Execute the command in string c as a sub-shell. Returns the exit status of the process.
times()
Returns a tuple of statistics about the current process's elapsed time. This tuple has the form
(u,s,u',s',r) where u is user time, s is system time, u' and s' are user and system time includ-
ing all child processes, and r is elapsed real time. All values are in seconds as floats.
tmpfile()
Returns a new, open temporary file, with update mode "w+b". This file will not appear in any dir-
ectory, and will disappear when it is no longer in use.
umask(m)
Sets the “umask” that determines the default permissions for newly created files. Returns the previous
value. Each bit set in the umask corresponds to a permission that is not granted by default.
uname()
Returns a tuple of strings descriping the operating system's version: (s,n,r,v,m) where s is the
name of the operating system, n is the name of the processor (node) where you are running, r is
the operating system's version number, v is the major version, and m describes the type of processor.
urandom(n)
Return a string of n random bytes. These bytes should be sufficiently random for use in cryptographic
applications.
utime(p,t)
The t argument must be a tuple (a, m) where a and m are epoch times. For pathname p, set the
last access time to a and the last modification to m.
wait()
Wait for the termination of a child process. Returns a tuple (p,e) where p is the child's process ID
and e is its exit status.
waitpid(p,o)
Like wait(), but it waits for the process whose ID is p. The option value o specifies what to do if
the child is still running. If o is 0, you wait for the child to terminate. Use a value of os.WNOHANG
if you don't want to wait.
WNOHANG
See waitpid() above.
ST_ATIME The epoch time of last access (see the time module for interpretation of times).
New Mexico Tech Computer Center Python 2.7 quick reference 151
ST_CTIME The epoch time of the file's last status change.
ST_DEV The device number.
ST_GID The group ID.
ST_INO The i-node number.
ST_MODE The file's permissions.
ST_MTIME The epoch time of last modification.
ST_NLINK The number of hard links.
ST_SIZE The current size in bytes.
ST_UID The user ID.
The following functions are defined in the stat module for testing a mode value m, where m is the
ST_MODE element of the status tuple. Each function is a predicate:
These constants are defined for use as mask values in testing and assembling permission values such
as those returned by os.stat() in Section 28.7, “os: The operating system interface” (p. 149).
152 Python 2.7 quick reference New Mexico Tech Computer Center
abspath(p)
Return the absolute path name that is equivalent to path p.
basename(p)
Return the base name portion of a path name string p. See split(), below.
commonprefix(L)
For a list L containing pathname strings, return the longest string that is a prefix of each element in
L.
exists(p)
Predicate for testing whether pathname p exists.
expanduser(p)
If p is a pathname starting with a tilde character (~), return the equivalent full pathname; otherwise
return p.
isabs(p)
Predicate for testing whether p is an absolute pathname (e.g., starts with a slash on Unix systems).
isfile(p)
Predicate for testing whether p refers to a regular file, as opposed to a directory, link, or device.
islink(p)
Predicate for testing whether p is a soft (symbolic) link.
ismount(p)
Predicate for testing whether p is a mount point, that is, whether p is on a different device than its
parent directory.
join(p,q)
If q is an absolute path, returns q. Otherwise, if p is empty or ends in a slash, returns p+q, but oth-
erwise it returns p+'/'+q.
normcase(p)
Return pathname p with its case normalized. On Unix systems, this does nothing, but on Macs it
lowercases p.
samefile(p,q)
Predicate for testing whether p and q are the same file (that is, the same inode on the same device).
This method may raise an exception if os.stat() fails for either argument.
split(p)
Return a 2-tuple (H,T) where T is the tail end of the pathname (not containing a slash) and H is
everything up to the tail. If p ends with a slash, returns (p,''). If p contains no slashes, returns
('',p). The returned H string will have its trailing slash removed unless H is the root directory.
splitext(p)
Returns a 2-tuple (R,E) where E is the “extension” part of the pathname and R is the “root” part.
If p contains at least one period, E will contain the last period and everything after that, and R will
be everything up to but not including the last period. If p contains no periods, returns (p,'').
walk(p,V,a)
Walks an entire directory structure starting at pathname p. See below for more information.
The os.path.walk(p,V,a) function does the following for every directory at or below p (including
p if p is a directory), this method calls the “visitor function” V with arguments
V(a,d,N)
New Mexico Tech Computer Center Python 2.7 quick reference 153
a The same a passed to os.path.walk(). You can use a to provide information to the V() function,
or to accumulate information throughout the traversal of the directory structure.
d A string containing the name of the directory being visited.
N A list of all the names within directory d. You can remove elements from this list in place if there
are some elements of d that you don't want walk() to visit.
-r Nile
-rNile
--river Nile
--river=Nile
Users may group multiple short-form options together. For example, if a script named sss has options
“-a”, “-m”, “-p”, and “-s”, these two examples are valid and equivalent:
sss -a -m -p -s
sss -spma
A short-form option that takes an argument may occur as part of such a group, but only if it is the
last option in the group.
Contrary to Unix practice, optional arguments may occur anywhere relative to the positional argu-
ments. Also, the names of long-form optional arguments may be abbreviated if the abbreviation is
unambiguous. For example, if a script has two long-form options --pratt and --polonius, option
42
http://docs.python.org/library/argparse.html
154 Python 2.7 quick reference New Mexico Tech Computer Center
--pr will be accepted as an abbreviation for --pratt; but --p would not be acceptable because it
is ambiguous.
import argparse
P = argparse.ArgumentParser(**kw)
parser = argparse.ArgumentParser(prog="nile-source",
description="Find the source of the Nile")
New Mexico Tech Computer Center Python 2.7 quick reference 155
argument or an optional argument. In either case, there are a number of keyword arguments denoted
as “**kw”; we will describe these arguments below.
To define a positional command line argument, use this form:
P.add_argument(posName, **kw)
The posName is a string that specifies the name of the argument (which cannot begin with “-”). For
example, if your ArgumentParser instance is p, to define a positional argument called “inFile”,
your call might begin like this:
p.add_argument("inFile", ...)
Each si is a string defining the option name, starting with either "-" for short-form options or "--"
for options with the long form.
For example, if you have an option whose short form is “-x” and whose long form is “--exec”, your
method call would begin:
You can specify any number of short and long form options in this way.
Here are the principle keyword arguments to the .add_argument() method. Some of these require
information to be passed through other keyword arguments.
dest
Name of the attribute where the value of this argument will be stored in the result returned by the
ArgumentParser.parse_args() method. If you don't specify this, the attribute name will be:
• For positional arguments, the attribute name will be the name passed as the first argument to
.add_argument().
• For optional arguments, the attribute name is the first long-form option name given if there is at
least one; otherwise the attribute name is the first short-form option name given.
For example, if the method call looks like .add_argument('-x', '--exec', '--run',
...), the value will be stored in the .exec attribute of the result returned by .arg_parse().
action
Specifies what happens when this command line argument is processed. The value must be one of
the following:
action='store'
Store the argument value as a string in the result returned by .arg_parse(). The name of the
attribute where it is stored is given by the dest keyword argument, or the default name as
explained above.
action='store_const'
You must provide a keyword argument const=V, where V is the value to be stored in the result
returned from .arg_parse().
action='store_true'
Store a True value in the returned result. If the user does not supply this option,
.parse_args() stores a False value in the returned result.
156 Python 2.7 quick reference New Mexico Tech Computer Center
action='store_false'
Store a False value in the returned result. If the user doesn't supply this option,
.parse_args() stores a True value in the returned result.
action='append'
For arguments that may be repeated, this action causes each repeated argument to be appended
to the list of values in the result returned by .arg_parse() .
action='append_const'
This works like action='append', but the value V, specified elsewhere by const=V is appen-
ded to the list of arguments.
action='version'
This option instructs the ArgumentParser instance to implement a --version option that
reports the current version of your script. You must provide a version=V argument that defines
the version string as V.
If you don't supply an action argument, the default is action=None. In this case:
• For positional command line arguments, the value of the argument is stored.
• For optional command line arguments, the stored value is None, unless you provide a default=S
argument to .add_argument().
nargs
Specifies the number of this kind of argument. This feature works for both positional and optional
arguments. In the value returned by .parse_args(), the attribute associated with this argument
will be a list, not a single value.
• If the value of the nargs option is an integer, exactly that many arguments must be provided.
• nargs='*' means zero or more. For positional arguments, this means all the remaining arguments
supplied will be included in the returned list of values.
• nargs='+' means one or more: there must be at least one such argument, but there may be any
number.
• nargs='?' means that this argument is optional.
• For positional command line arguments, the returned value will be the value from the command
line if there is one; otherwise you will supply the default returned value D by providing keyword
argument default=D to the .add_argument() call.
• For optional command line arguments, nargs='?' signifies that the option may be given a
value.
• If the user does not provide this option, the value returned by .arg_parse() will be the
default value from the const=C argument to .add_argument().
• If the user provides this option but does not follow it with a value, the value returned by
.arg_parse() will be the default value from the default=D argument to .add_argu-
ment().
• If the user provides this option with a value V, the attribute of the value returned by
.arg_parse() will be V.
• The default value is nargs=None. In this case:
• For a positional command line argument, this means exactly one is expected.
• For an optional command line argument, the stored value is None unless you provide a default
value D with default=D.
const
See above under action='store_const' and action='append_const'.
New Mexico Tech Computer Center Python 2.7 quick reference 157
default
Provides a default value; see above under nargs.
type
Convert the value to a given type. For example, type=int would attempt to convert the associated
argument to a Python int; if the argument is not a valid integer, .arg_parse() will print the
usage message and terminate.
For arguments that are file names, the argparse module will even open the file for you. Here is
the general form:
type=argparse.FileType(mode=M)
where M is the mode string as in the second argument to open(). For example, this form would
attempt to open a new file for writing, using the value of the command line option as the file name.
Note that .arg_parse() may raise an IOError or OSError exception if the file can't be opened.
You can specify any converter function as the value of the type keyword argument. This function
takes one argument, a string, and returns a value of whatever type you like. Your converter function
may also raise an argparse.ArgumentTypeError exception to signify an invalid value.
choices
An iterable that specifies the only valid choices. For example, choices=('red', 'grn', 'blu')
would allow only those three specific strings as values of the associated command line argument.
required
If an argument that starts with a hyphen is not actually optional, use required=True.
help
A string describing what this option does. Strongly recommended, and it will be displayed in the
help message.
metavar
Specifies the name of this optional for external display. For example, suppose your .add_argu-
ment() call starts like this:
Then the argument value will be stored in attribute .inFile of the result returned by
.arg_parse(), but the help message will refer to this argument as “INFILE”.
P.parse_args(args=None, namespace=None)
The args parameter specifies a set of command line arguments as a list of strings. If you omit this, the
command line arguments will be taken from sys.argv.
By default, the returned value will be an instance of class argparse.Namespace. The values returned
by parsing the command line will be stored as attributes in this instance. However, you may instead
use namespace to specify some instance to which the attributes will be added.
158 Python 2.7 quick reference New Mexico Tech Computer Center
Here's an extended example. This script sets up four command line arguments and then tests it against
various simulated argument lists.
#!/usr/bin/env python
from __future__ import print_function
import sys
import argparse
p = argparse.ArgumentParser(prog='larch',
description="Number 1: The Larch")
p.add_argument('-n', '--name', default='Dinsdale',
help='Name your amoeba')
p.add_argument('-x', '--exec', action='store_true',
help='Shoot amoeba afterwards')
p.add_argument('in', help='Input file', metavar='INFILE')
p.add_argument('outs', nargs='*', help='Output file(s)',
metavar='OUTFILE')
test(p, ['ingoat'])
test(p, ['-x', 'Brian'])
test(p, ['--exec', 'Brian', 'Reg', 'Dirk'])
test(p, ['-n', 'Brian', 'Reg', 'Dirk'])
test(p, ['--name=Pinnet', 'notlob', 'bolton'])
test(p, ['--nosuch', 'Centurion'])
positional arguments:
INFILE Input file
OUTFILE Output file(s)
optional arguments:
-h, --help show this help message and exit
-n NAME, --name NAME Name your amoeba
-x, --exec Shoot amoeba afterwards
New Mexico Tech Computer Center Python 2.7 quick reference 159
=== Test with ['ingoat']
{'in': 'ingoat', 'name': 'Dinsdale', 'outs': [], 'exec': False}
160 Python 2.7 quick reference New Mexico Tech Computer Center
.add_mutually_exclusive_group(required=False)
If you have two or more options that cannot be specified on the same command line, use this
method to create an option group. Then call the .add_argument() on the group instance to add
these options. If you specify required=True, the user is required supply one of the options in the
group.
Suppose for example that you have two mutually exclusive options --english and --metric.
This code would prohibit the user from specifying both at once:
p = argparse.ArgumentParser()
g = p.add_mutually_exclusive_group()
g.add_argument("-e", "--english", dest="isMetric", action="store_false")
g.add_argument("-m", "--metric", dest="isMetric", action="store_true")
.set_defaults(**kw)
Use this method to specify the default values of any variable. For each keyword argument n=v, the
value of n in the result returned by .parse_args() will have value v in case the user does not
specify a value explicitly.
For example, if you have two mutually exclusive options, but you don't require one or the other,
the .set_defaults() method is a good way to specify the value of the option when neither is
given. Here is an interactive example showing this technique.
New Mexico Tech Computer Center Python 2.7 quick reference 161
162 Python 2.7 quick reference New Mexico Tech Computer Center