• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. XXX: reference/datamodel and this have quite a few overlaps!
2
3
4.. _bltin-types:
5
6**************
7Built-in Types
8**************
9
10The following sections describe the standard types that are built into the
11interpreter.
12
13.. note::
14
15   Historically (until release 2.2), Python's built-in types have differed from
16   user-defined types because it was not possible to use the built-in types as the
17   basis for object-oriented inheritance. This limitation no longer
18   exists.
19
20.. index:: pair: built-in; types
21
22The principal built-in types are numerics, sequences, mappings, files, classes,
23instances and exceptions.
24
25.. index:: statement: print
26
27Some operations are supported by several object types; in particular,
28practically all objects can be compared, tested for truth value, and converted
29to a string (with the :ref:`repr() <func-repr>` function or the slightly different
30:func:`str` function).  The latter function is implicitly used when an object is
31written by the :func:`print` function.
32
33
34.. _truth:
35
36Truth Value Testing
37===================
38
39.. index::
40   statement: if
41   statement: while
42   pair: truth; value
43   pair: Boolean; operations
44   single: false
45
46Any object can be tested for truth value, for use in an :keyword:`if` or
47:keyword:`while` condition or as operand of the Boolean operations below. The
48following values are considered false:
49
50  .. index:: single: None (Built-in object)
51
52* ``None``
53
54  .. index:: single: False (Built-in object)
55
56* ``False``
57
58* zero of any numeric type, for example, ``0``, ``0L``, ``0.0``, ``0j``.
59
60* any empty sequence, for example, ``''``, ``()``, ``[]``.
61
62* any empty mapping, for example, ``{}``.
63
64* instances of user-defined classes, if the class defines a :meth:`__nonzero__`
65  or :meth:`__len__` method, when that method returns the integer zero or
66  :class:`bool` value ``False``. [1]_
67
68.. index:: single: true
69
70All other values are considered true --- so objects of many types are always
71true.
72
73.. index::
74   operator: or
75   operator: and
76   single: False
77   single: True
78
79Operations and built-in functions that have a Boolean result always return ``0``
80or ``False`` for false and ``1`` or ``True`` for true, unless otherwise stated.
81(Important exception: the Boolean operations ``or`` and ``and`` always return
82one of their operands.)
83
84
85.. _boolean:
86
87Boolean Operations --- :keyword:`and`, :keyword:`or`, :keyword:`not`
88====================================================================
89
90.. index:: pair: Boolean; operations
91
92These are the Boolean operations, ordered by ascending priority:
93
94+-------------+---------------------------------+-------+
95| Operation   | Result                          | Notes |
96+=============+=================================+=======+
97| ``x or y``  | if *x* is false, then *y*, else | \(1)  |
98|             | *x*                             |       |
99+-------------+---------------------------------+-------+
100| ``x and y`` | if *x* is false, then *x*, else | \(2)  |
101|             | *y*                             |       |
102+-------------+---------------------------------+-------+
103| ``not x``   | if *x* is false, then ``True``, | \(3)  |
104|             | else ``False``                  |       |
105+-------------+---------------------------------+-------+
106
107.. index::
108   operator: and
109   operator: or
110   operator: not
111
112Notes:
113
114(1)
115   This is a short-circuit operator, so it only evaluates the second
116   argument if the first one is :const:`False`.
117
118(2)
119   This is a short-circuit operator, so it only evaluates the second
120   argument if the first one is :const:`True`.
121
122(3)
123   ``not`` has a lower priority than non-Boolean operators, so ``not a == b`` is
124   interpreted as ``not (a == b)``, and ``a == not b`` is a syntax error.
125
126
127.. _stdcomparisons:
128
129Comparisons
130===========
131
132.. index::
133   pair: chaining; comparisons
134   pair: operator; comparison
135   operator: ==
136   operator: <
137   operator: <=
138   operator: >
139   operator: >=
140   operator: !=
141   operator: is
142   operator: is not
143
144Comparison operations are supported by all objects.  They all have the same
145priority (which is higher than that of the Boolean operations). Comparisons can
146be chained arbitrarily; for example, ``x < y <= z`` is equivalent to ``x < y and
147y <= z``, except that *y* is evaluated only once (but in both cases *z* is not
148evaluated at all when ``x < y`` is found to be false).
149
150This table summarizes the comparison operations:
151
152+------------+-------------------------+-------+
153| Operation  | Meaning                 | Notes |
154+============+=========================+=======+
155| ``<``      | strictly less than      |       |
156+------------+-------------------------+-------+
157| ``<=``     | less than or equal      |       |
158+------------+-------------------------+-------+
159| ``>``      | strictly greater than   |       |
160+------------+-------------------------+-------+
161| ``>=``     | greater than or equal   |       |
162+------------+-------------------------+-------+
163| ``==``     | equal                   |       |
164+------------+-------------------------+-------+
165| ``!=``     | not equal               | \(1)  |
166+------------+-------------------------+-------+
167| ``is``     | object identity         |       |
168+------------+-------------------------+-------+
169| ``is not`` | negated object identity |       |
170+------------+-------------------------+-------+
171
172Notes:
173
174(1)
175    ``!=`` can also be written ``<>``, but this is an obsolete usage
176    kept for backwards compatibility only. New code should always use
177    ``!=``.
178
179.. index::
180   pair: object; numeric
181   pair: objects; comparing
182
183Objects of different types, except different numeric types and different string
184types, never compare equal; such objects are ordered consistently but
185arbitrarily (so that sorting a heterogeneous array yields a consistent result).
186Furthermore, some types (for example, file objects) support only a degenerate
187notion of comparison where any two objects of that type are unequal.  Again,
188such objects are ordered arbitrarily but consistently. The ``<``, ``<=``, ``>``
189and ``>=`` operators will raise a :exc:`TypeError` exception when any operand is
190a complex number.
191
192.. index::
193   single: __cmp__() (instance method)
194   single: __eq__() (instance method)
195   single: __ne__() (instance method)
196   single: __lt__() (instance method)
197   single: __le__() (instance method)
198   single: __gt__() (instance method)
199   single: __ge__() (instance method)
200
201Non-identical instances of a class normally compare as non-equal unless the
202class defines the :meth:`__eq__` method or the :meth:`__cmp__` method.
203
204Instances of a class cannot be ordered with respect to other instances of the
205same class, or other types of object, unless the class defines either enough of
206the rich comparison methods (:meth:`__lt__`, :meth:`__le__`, :meth:`__gt__`, and
207:meth:`__ge__`) or the :meth:`__cmp__` method.
208
209.. impl-detail::
210
211   Objects of different types except numbers are ordered by their type names;
212   objects of the same types that don't support proper comparison are ordered by
213   their address.
214
215.. index::
216   operator: in
217   operator: not in
218
219Two more operations with the same syntactic priority, ``in`` and ``not in``, are
220supported only by sequence types (below).
221
222
223.. _typesnumeric:
224
225Numeric Types --- :class:`int`, :class:`float`, :class:`long`, :class:`complex`
226===============================================================================
227
228.. index::
229   object: numeric
230   object: Boolean
231   object: integer
232   object: long integer
233   object: floating point
234   object: complex number
235   pair: C; language
236
237There are four distinct numeric types: :dfn:`plain integers`, :dfn:`long
238integers`, :dfn:`floating point numbers`, and :dfn:`complex numbers`. In
239addition, Booleans are a subtype of plain integers. Plain integers (also just
240called :dfn:`integers`) are implemented using :c:type:`long` in C, which gives
241them at least 32 bits of precision (``sys.maxint`` is always set to the maximum
242plain integer value for the current platform, the minimum value is
243``-sys.maxint - 1``).  Long integers have unlimited precision.  Floating point
244numbers are usually implemented using :c:type:`double` in C; information about
245the precision and internal representation of floating point numbers for the
246machine on which your program is running is available in
247:data:`sys.float_info`.  Complex numbers have a real and imaginary part, which
248are each a floating point number.  To extract these parts from a complex number
249*z*, use ``z.real`` and ``z.imag``. (The standard library includes additional
250numeric types, :mod:`fractions` that hold rationals, and :mod:`decimal` that
251hold floating-point numbers with user-definable precision.)
252
253.. index::
254   pair: numeric; literals
255   pair: integer; literals
256   triple: long; integer; literals
257   pair: floating point; literals
258   pair: complex number; literals
259   pair: hexadecimal; literals
260   pair: octal; literals
261
262Numbers are created by numeric literals or as the result of built-in functions
263and operators.  Unadorned integer literals (including binary, hex, and octal
264numbers) yield plain integers unless the value they denote is too large to be
265represented as a plain integer, in which case they yield a long integer.
266Integer literals with an ``'L'`` or ``'l'`` suffix yield long integers (``'L'``
267is preferred because ``1l`` looks too much like eleven!).  Numeric literals
268containing a decimal point or an exponent sign yield floating point numbers.
269Appending ``'j'`` or ``'J'`` to a numeric literal yields an imaginary number
270(a complex number with a zero real part) which you can add to an integer or
271float to get a complex number with real and imaginary parts.
272
273.. index::
274   single: arithmetic
275   builtin: int
276   builtin: long
277   builtin: float
278   builtin: complex
279   operator: +
280   operator: -
281   operator: *
282   operator: /
283   operator: //
284   operator: %
285   operator: **
286
287Python fully supports mixed arithmetic: when a binary arithmetic operator has
288operands of different numeric types, the operand with the "narrower" type is
289widened to that of the other, where plain integer is narrower than long integer
290is narrower than floating point is narrower than complex. Comparisons between
291numbers of mixed type use the same rule. [2]_ The constructors :func:`int`,
292:func:`long`, :func:`float`, and :func:`complex` can be used to produce numbers
293of a specific type.
294
295All built-in numeric types support the following operations. See
296:ref:`power` and later sections for the operators' priorities.
297
298+--------------------+---------------------------------+--------+
299| Operation          | Result                          | Notes  |
300+====================+=================================+========+
301| ``x + y``          | sum of *x* and *y*              |        |
302+--------------------+---------------------------------+--------+
303| ``x - y``          | difference of *x* and *y*       |        |
304+--------------------+---------------------------------+--------+
305| ``x * y``          | product of *x* and *y*          |        |
306+--------------------+---------------------------------+--------+
307| ``x / y``          | quotient of *x* and *y*         | \(1)   |
308+--------------------+---------------------------------+--------+
309| ``x // y``         | (floored) quotient of *x* and   | (4)(5) |
310|                    | *y*                             |        |
311+--------------------+---------------------------------+--------+
312| ``x % y``          | remainder of ``x / y``          | \(4)   |
313+--------------------+---------------------------------+--------+
314| ``-x``             | *x* negated                     |        |
315+--------------------+---------------------------------+--------+
316| ``+x``             | *x* unchanged                   |        |
317+--------------------+---------------------------------+--------+
318| ``abs(x)``         | absolute value or magnitude of  | \(3)   |
319|                    | *x*                             |        |
320+--------------------+---------------------------------+--------+
321| ``int(x)``         | *x* converted to integer        | \(2)   |
322+--------------------+---------------------------------+--------+
323| ``long(x)``        | *x* converted to long integer   | \(2)   |
324+--------------------+---------------------------------+--------+
325| ``float(x)``       | *x* converted to floating point | \(6)   |
326+--------------------+---------------------------------+--------+
327| ``complex(re,im)`` | a complex number with real part |        |
328|                    | *re*, imaginary part *im*.      |        |
329|                    | *im* defaults to zero.          |        |
330+--------------------+---------------------------------+--------+
331| ``c.conjugate()``  | conjugate of the complex number |        |
332|                    | *c*. (Identity on real numbers) |        |
333+--------------------+---------------------------------+--------+
334| ``divmod(x, y)``   | the pair ``(x // y, x % y)``    | (3)(4) |
335+--------------------+---------------------------------+--------+
336| ``pow(x, y)``      | *x* to the power *y*            | (3)(7) |
337+--------------------+---------------------------------+--------+
338| ``x ** y``         | *x* to the power *y*            | \(7)   |
339+--------------------+---------------------------------+--------+
340
341.. index::
342   triple: operations on; numeric; types
343   single: conjugate() (complex number method)
344
345Notes:
346
347(1)
348   .. index::
349      pair: integer; division
350      triple: long; integer; division
351
352   For (plain or long) integer division, the result is an integer. The result is
353   always rounded towards minus infinity: 1/2 is 0, (-1)/2 is -1, 1/(-2) is -1, and
354   (-1)/(-2) is 0.  Note that the result is a long integer if either operand is a
355   long integer, regardless of the numeric value.
356
357(2)
358   .. index::
359      module: math
360      single: floor() (in module math)
361      single: ceil() (in module math)
362      single: trunc() (in module math)
363      pair: numeric; conversions
364
365   Conversion from floats using :func:`int` or :func:`long` truncates toward
366   zero like the related function, :func:`math.trunc`.  Use the function
367   :func:`math.floor` to round downward and :func:`math.ceil` to round
368   upward.
369
370(3)
371   See :ref:`built-in-funcs` for a full description.
372
373(4)
374   .. deprecated:: 2.3
375      The floor division operator, the modulo operator, and the :func:`divmod`
376      function are no longer defined for complex numbers.  Instead, convert to
377      a floating point number using the :func:`abs` function if appropriate.
378
379(5)
380   Also referred to as integer division.  The resultant value is a whole integer,
381   though the result's type is not necessarily int.
382
383(6)
384   float also accepts the strings "nan" and "inf" with an optional prefix "+"
385   or "-" for Not a Number (NaN) and positive or negative infinity.
386
387   .. versionadded:: 2.6
388
389(7)
390   Python defines ``pow(0, 0)`` and ``0 ** 0`` to be ``1``, as is common for
391   programming languages.
392
393All :class:`numbers.Real` types (:class:`int`, :class:`long`, and
394:class:`float`) also include the following operations:
395
396+--------------------+---------------------------------------------+
397| Operation          | Result                                      |
398+====================+=============================================+
399| :func:`math.trunc(\| *x* truncated to :class:`~numbers.Integral` |
400| x) <math.trunc>`   |                                             |
401+--------------------+---------------------------------------------+
402| :func:`round(x[,   | *x* rounded to *n* digits,                  |
403| n]) <round>`       | rounding ties away from zero. If *n*        |
404|                    | is omitted, it defaults to 0.               |
405+--------------------+---------------------------------------------+
406| :func:`math.floor(\| the greatest integer as a float <= *x*      |
407| x) <math.floor>`   |                                             |
408+--------------------+---------------------------------------------+
409| :func:`math.ceil(x)| the least integer as a float >= *x*         |
410| <math.ceil>`       |                                             |
411+--------------------+---------------------------------------------+
412
413.. XXXJH exceptions: overflow (when? what operations?) zerodivision
414
415
416.. _bitstring-ops:
417
418Bitwise Operations on Integer Types
419--------------------------------------
420
421.. index::
422   triple: operations on; integer; types
423   pair: bitwise; operations
424   pair: shifting; operations
425   pair: masking; operations
426   operator: ^
427   operator: &
428   operator: <<
429   operator: >>
430
431Bitwise operations only make sense for integers.  Negative numbers are treated
432as their 2's complement value (this assumes a sufficiently large number of bits
433that no overflow occurs during the operation).
434
435The priorities of the binary bitwise operations are all lower than the numeric
436operations and higher than the comparisons; the unary operation ``~`` has the
437same priority as the other unary numeric operations (``+`` and ``-``).
438
439This table lists the bitwise operations sorted in ascending priority:
440
441+------------+--------------------------------+----------+
442| Operation  | Result                         | Notes    |
443+============+================================+==========+
444| ``x | y``  | bitwise :dfn:`or` of *x* and   |          |
445|            | *y*                            |          |
446+------------+--------------------------------+----------+
447| ``x ^ y``  | bitwise :dfn:`exclusive or` of |          |
448|            | *x* and *y*                    |          |
449+------------+--------------------------------+----------+
450| ``x & y``  | bitwise :dfn:`and` of *x* and  |          |
451|            | *y*                            |          |
452+------------+--------------------------------+----------+
453| ``x << n`` | *x* shifted left by *n* bits   | (1)(2)   |
454+------------+--------------------------------+----------+
455| ``x >> n`` | *x* shifted right by *n* bits  | (1)(3)   |
456+------------+--------------------------------+----------+
457| ``~x``     | the bits of *x* inverted       |          |
458+------------+--------------------------------+----------+
459
460Notes:
461
462(1)
463   Negative shift counts are illegal and cause a :exc:`ValueError` to be raised.
464
465(2)
466   A left shift by *n* bits is equivalent to multiplication by ``pow(2, n)``.  A
467   long integer is returned if the result exceeds the range of plain integers.
468
469(3)
470   A right shift by *n* bits is equivalent to division by ``pow(2, n)``.
471
472
473Additional Methods on Integer Types
474-----------------------------------
475
476The integer types implement the :class:`numbers.Integral` :term:`abstract base
477class`. In addition, they provide one more method:
478
479.. method:: int.bit_length()
480.. method:: long.bit_length()
481
482    Return the number of bits necessary to represent an integer in binary,
483    excluding the sign and leading zeros::
484
485        >>> n = -37
486        >>> bin(n)
487        '-0b100101'
488        >>> n.bit_length()
489        6
490
491    More precisely, if ``x`` is nonzero, then ``x.bit_length()`` is the
492    unique positive integer ``k`` such that ``2**(k-1) <= abs(x) < 2**k``.
493    Equivalently, when ``abs(x)`` is small enough to have a correctly
494    rounded logarithm, then ``k = 1 + int(log(abs(x), 2))``.
495    If ``x`` is zero, then ``x.bit_length()`` returns ``0``.
496
497    Equivalent to::
498
499        def bit_length(self):
500            s = bin(self)       # binary representation:  bin(-37) --> '-0b100101'
501            s = s.lstrip('-0b') # remove leading zeros and minus sign
502            return len(s)       # len('100101') --> 6
503
504    .. versionadded:: 2.7
505
506
507Additional Methods on Float
508---------------------------
509
510The float type implements the :class:`numbers.Real` :term:`abstract base
511class`. float also has the following additional methods.
512
513.. method:: float.as_integer_ratio()
514
515   Return a pair of integers whose ratio is exactly equal to the
516   original float and with a positive denominator.  Raises
517   :exc:`OverflowError` on infinities and a :exc:`ValueError` on
518   NaNs.
519
520   .. versionadded:: 2.6
521
522.. method:: float.is_integer()
523
524   Return ``True`` if the float instance is finite with integral
525   value, and ``False`` otherwise::
526
527      >>> (-2.0).is_integer()
528      True
529      >>> (3.2).is_integer()
530      False
531
532   .. versionadded:: 2.6
533
534Two methods support conversion to
535and from hexadecimal strings.  Since Python's floats are stored
536internally as binary numbers, converting a float to or from a
537*decimal* string usually involves a small rounding error.  In
538contrast, hexadecimal strings allow exact representation and
539specification of floating-point numbers.  This can be useful when
540debugging, and in numerical work.
541
542
543.. method:: float.hex()
544
545   Return a representation of a floating-point number as a hexadecimal
546   string.  For finite floating-point numbers, this representation
547   will always include a leading ``0x`` and a trailing ``p`` and
548   exponent.
549
550   .. versionadded:: 2.6
551
552
553.. method:: float.fromhex(s)
554
555   Class method to return the float represented by a hexadecimal
556   string *s*.  The string *s* may have leading and trailing
557   whitespace.
558
559   .. versionadded:: 2.6
560
561
562Note that :meth:`float.hex` is an instance method, while
563:meth:`float.fromhex` is a class method.
564
565A hexadecimal string takes the form::
566
567   [sign] ['0x'] integer ['.' fraction] ['p' exponent]
568
569where the optional ``sign`` may by either ``+`` or ``-``, ``integer``
570and ``fraction`` are strings of hexadecimal digits, and ``exponent``
571is a decimal integer with an optional leading sign.  Case is not
572significant, and there must be at least one hexadecimal digit in
573either the integer or the fraction.  This syntax is similar to the
574syntax specified in section 6.4.4.2 of the C99 standard, and also to
575the syntax used in Java 1.5 onwards.  In particular, the output of
576:meth:`float.hex` is usable as a hexadecimal floating-point literal in
577C or Java code, and hexadecimal strings produced by C's ``%a`` format
578character or Java's ``Double.toHexString`` are accepted by
579:meth:`float.fromhex`.
580
581
582Note that the exponent is written in decimal rather than hexadecimal,
583and that it gives the power of 2 by which to multiply the coefficient.
584For example, the hexadecimal string ``0x3.a7p10`` represents the
585floating-point number ``(3 + 10./16 + 7./16**2) * 2.0**10``, or
586``3740.0``::
587
588   >>> float.fromhex('0x3.a7p10')
589   3740.0
590
591
592Applying the reverse conversion to ``3740.0`` gives a different
593hexadecimal string representing the same number::
594
595   >>> float.hex(3740.0)
596   '0x1.d380000000000p+11'
597
598
599.. _typeiter:
600
601Iterator Types
602==============
603
604.. versionadded:: 2.2
605
606.. index::
607   single: iterator protocol
608   single: protocol; iterator
609   single: sequence; iteration
610   single: container; iteration over
611
612Python supports a concept of iteration over containers.  This is implemented
613using two distinct methods; these are used to allow user-defined classes to
614support iteration.  Sequences, described below in more detail, always support
615the iteration methods.
616
617One method needs to be defined for container objects to provide iteration
618support:
619
620.. XXX duplicated in reference/datamodel!
621
622.. method:: container.__iter__()
623
624   Return an iterator object.  The object is required to support the iterator
625   protocol described below.  If a container supports different types of
626   iteration, additional methods can be provided to specifically request
627   iterators for those iteration types.  (An example of an object supporting
628   multiple forms of iteration would be a tree structure which supports both
629   breadth-first and depth-first traversal.)  This method corresponds to the
630   :c:member:`~PyTypeObject.tp_iter` slot of the type structure for Python objects in the Python/C
631   API.
632
633The iterator objects themselves are required to support the following two
634methods, which together form the :dfn:`iterator protocol`:
635
636
637.. method:: iterator.__iter__()
638
639   Return the iterator object itself.  This is required to allow both containers
640   and iterators to be used with the :keyword:`for` and :keyword:`in` statements.
641   This method corresponds to the :c:member:`~PyTypeObject.tp_iter` slot of the type structure for
642   Python objects in the Python/C API.
643
644
645.. method:: iterator.next()
646
647   Return the next item from the container.  If there are no further items, raise
648   the :exc:`StopIteration` exception.  This method corresponds to the
649   :c:member:`~PyTypeObject.tp_iternext` slot of the type structure for Python objects in the
650   Python/C API.
651
652Python defines several iterator objects to support iteration over general and
653specific sequence types, dictionaries, and other more specialized forms.  The
654specific types are not important beyond their implementation of the iterator
655protocol.
656
657The intention of the protocol is that once an iterator's :meth:`~iterator.next` method
658raises :exc:`StopIteration`, it will continue to do so on subsequent calls.
659Implementations that do not obey this property are deemed broken.  (This
660constraint was added in Python 2.3; in Python 2.2, various iterators are broken
661according to this rule.)
662
663
664.. _generator-types:
665
666Generator Types
667---------------
668
669Python's :term:`generator`\s provide a convenient way to implement the iterator
670protocol.  If a container object's :meth:`__iter__` method is implemented as a
671generator, it will automatically return an iterator object (technically, a
672generator object) supplying the :meth:`~iterator.__iter__` and
673:meth:`~iterator.next` methods.  More information about generators can be found
674in :ref:`the documentation for the yield expression <yieldexpr>`.
675
676
677.. _typesseq:
678
679Sequence Types --- :class:`str`, :class:`unicode`, :class:`list`, :class:`tuple`, :class:`bytearray`, :class:`buffer`, :class:`xrange`
680======================================================================================================================================
681
682There are seven sequence types: strings, Unicode strings, lists, tuples,
683bytearrays, buffers, and xrange objects.
684
685For other containers see the built in :class:`dict` and :class:`set` classes,
686and the :mod:`collections` module.
687
688
689.. index::
690   object: sequence
691   object: string
692   object: Unicode
693   object: tuple
694   object: list
695   object: bytearray
696   object: buffer
697   object: xrange
698
699String literals are written in single or double quotes: ``'xyzzy'``,
700``"frobozz"``.  See :ref:`strings` for more about string literals.
701Unicode strings are much like strings, but are specified in the syntax
702using a preceding ``'u'`` character: ``u'abc'``, ``u"def"``. In addition
703to the functionality described here, there are also string-specific
704methods described in the :ref:`string-methods` section. Lists are
705constructed with square brackets, separating items with commas: ``[a, b, c]``.
706Tuples are constructed by the comma operator (not within square
707brackets), with or without enclosing parentheses, but an empty tuple
708must have the enclosing parentheses, such as ``a, b, c`` or ``()``.  A
709single item tuple must have a trailing comma, such as ``(d,)``.
710
711Bytearray objects are created with the built-in function :func:`bytearray`.
712
713Buffer objects are not directly supported by Python syntax, but can be created
714by calling the built-in function :func:`buffer`.  They don't support
715concatenation or repetition.
716
717Objects of type xrange are similar to buffers in that there is no specific syntax to
718create them, but they are created using the :func:`xrange` function.  They don't
719support slicing, concatenation or repetition, and using ``in``, ``not in``,
720:func:`min` or :func:`max` on them is inefficient.
721
722Most sequence types support the following operations.  The ``in`` and ``not in``
723operations have the same priorities as the comparison operations.  The ``+`` and
724``*`` operations have the same priority as the corresponding numeric operations.
725[3]_ Additional methods are provided for :ref:`typesseq-mutable`.
726
727This table lists the sequence operations sorted in ascending priority.
728In the table, *s* and *t* are sequences of the same type; *n*, *i* and *j* are integers:
729
730+------------------+--------------------------------+----------+
731| Operation        | Result                         | Notes    |
732+==================+================================+==========+
733| ``x in s``       | ``True`` if an item of *s* is  | \(1)     |
734|                  | equal to *x*, else ``False``   |          |
735+------------------+--------------------------------+----------+
736| ``x not in s``   | ``False`` if an item of *s* is | \(1)     |
737|                  | equal to *x*, else ``True``    |          |
738+------------------+--------------------------------+----------+
739| ``s + t``        | the concatenation of *s* and   | \(6)     |
740|                  | *t*                            |          |
741+------------------+--------------------------------+----------+
742| ``s * n, n * s`` | equivalent to adding *s* to    | \(2)     |
743|                  | itself *n* times               |          |
744+------------------+--------------------------------+----------+
745| ``s[i]``         | *i*\ th item of *s*, origin 0  | \(3)     |
746+------------------+--------------------------------+----------+
747| ``s[i:j]``       | slice of *s* from *i* to *j*   | (3)(4)   |
748+------------------+--------------------------------+----------+
749| ``s[i:j:k]``     | slice of *s* from *i* to *j*   | (3)(5)   |
750|                  | with step *k*                  |          |
751+------------------+--------------------------------+----------+
752| ``len(s)``       | length of *s*                  |          |
753+------------------+--------------------------------+----------+
754| ``min(s)``       | smallest item of *s*           |          |
755+------------------+--------------------------------+----------+
756| ``max(s)``       | largest item of *s*            |          |
757+------------------+--------------------------------+----------+
758| ``s.index(x)``   | index of the first occurrence  |          |
759|                  | of *x* in *s*                  |          |
760+------------------+--------------------------------+----------+
761| ``s.count(x)``   | total number of occurrences of |          |
762|                  | *x* in *s*                     |          |
763+------------------+--------------------------------+----------+
764
765Sequence types also support comparisons. In particular, tuples and lists
766are compared lexicographically by comparing corresponding
767elements. This means that to compare equal, every element must compare
768equal and the two sequences must be of the same type and have the same
769length. (For full details see :ref:`comparisons` in the language
770reference.)
771
772.. index::
773   triple: operations on; sequence; types
774   builtin: len
775   builtin: min
776   builtin: max
777   pair: concatenation; operation
778   pair: repetition; operation
779   pair: subscript; operation
780   pair: slice; operation
781   pair: extended slice; operation
782   operator: in
783   operator: not in
784
785Notes:
786
787(1)
788   When *s* is a string or Unicode string object the ``in`` and ``not in``
789   operations act like a substring test.  In Python versions before 2.3, *x* had to
790   be a string of length 1. In Python 2.3 and beyond, *x* may be a string of any
791   length.
792
793(2)
794   Values of *n* less than ``0`` are treated as ``0`` (which yields an empty
795   sequence of the same type as *s*).  Note that items in the sequence *s*
796   are not copied; they are referenced multiple times.  This often haunts
797   new Python programmers; consider:
798
799      >>> lists = [[]] * 3
800      >>> lists
801      [[], [], []]
802      >>> lists[0].append(3)
803      >>> lists
804      [[3], [3], [3]]
805
806   What has happened is that ``[[]]`` is a one-element list containing an empty
807   list, so all three elements of ``[[]] * 3`` are references to this single empty
808   list.  Modifying any of the elements of ``lists`` modifies this single list.
809   You can create a list of different lists this way:
810
811      >>> lists = [[] for i in range(3)]
812      >>> lists[0].append(3)
813      >>> lists[1].append(5)
814      >>> lists[2].append(7)
815      >>> lists
816      [[3], [5], [7]]
817
818   Further explanation is available in the FAQ entry
819   :ref:`faq-multidimensional-list`.
820
821(3)
822   If *i* or *j* is negative, the index is relative to the end of the string:
823   ``len(s) + i`` or ``len(s) + j`` is substituted.  But note that ``-0`` is still
824   ``0``.
825
826(4)
827   The slice of *s* from *i* to *j* is defined as the sequence of items with index
828   *k* such that ``i <= k < j``.  If *i* or *j* is greater than ``len(s)``, use
829   ``len(s)``.  If *i* is omitted or ``None``, use ``0``.  If *j* is omitted or
830   ``None``, use ``len(s)``.  If *i* is greater than or equal to *j*, the slice is
831   empty.
832
833(5)
834   The slice of *s* from *i* to *j* with step *k* is defined as the sequence of
835   items with index  ``x = i + n*k`` such that ``0 <= n < (j-i)/k``.  In other words,
836   the indices are ``i``, ``i+k``, ``i+2*k``, ``i+3*k`` and so on, stopping when
837   *j* is reached (but never including *j*).  If *i* or *j* is greater than
838   ``len(s)``, use ``len(s)``.  If *i* or *j* are omitted or ``None``, they become
839   "end" values (which end depends on the sign of *k*).  Note, *k* cannot be zero.
840   If *k* is ``None``, it is treated like ``1``.
841
842(6)
843   .. impl-detail::
844
845      If *s* and *t* are both strings, some Python implementations such as
846      CPython can usually perform an in-place optimization for assignments of
847      the form ``s = s + t`` or ``s += t``.  When applicable, this optimization
848      makes quadratic run-time much less likely.  This optimization is both
849      version and implementation dependent.  For performance sensitive code, it
850      is preferable to use the :meth:`str.join` method which assures consistent
851      linear concatenation performance across versions and implementations.
852
853   .. versionchanged:: 2.4
854      Formerly, string concatenation never occurred in-place.
855
856
857.. _string-methods:
858
859String Methods
860--------------
861
862.. index:: pair: string; methods
863
864Below are listed the string methods which both 8-bit strings and
865Unicode objects support.  Some of them are also available on :class:`bytearray`
866objects.
867
868In addition, Python's strings support the sequence type methods
869described in the :ref:`typesseq` section. To output formatted strings
870use template strings or the ``%`` operator described in the
871:ref:`string-formatting` section. Also, see the :mod:`re` module for
872string functions based on regular expressions.
873
874.. method:: str.capitalize()
875
876   Return a copy of the string with its first character capitalized and the
877   rest lowercased.
878
879   For 8-bit strings, this method is locale-dependent.
880
881
882.. method:: str.center(width[, fillchar])
883
884   Return centered in a string of length *width*. Padding is done using the
885   specified *fillchar* (default is a space).
886
887   .. versionchanged:: 2.4
888      Support for the *fillchar* argument.
889
890
891.. method:: str.count(sub[, start[, end]])
892
893   Return the number of non-overlapping occurrences of substring *sub* in the
894   range [*start*, *end*].  Optional arguments *start* and *end* are
895   interpreted as in slice notation.
896
897
898.. method:: str.decode([encoding[, errors]])
899
900   Decodes the string using the codec registered for *encoding*. *encoding*
901   defaults to the default string encoding.  *errors* may be given to set a
902   different error handling scheme.  The default is ``'strict'``, meaning that
903   encoding errors raise :exc:`UnicodeError`.  Other possible values are
904   ``'ignore'``, ``'replace'`` and any other name registered via
905   :func:`codecs.register_error`, see section :ref:`codec-base-classes`.
906
907   .. versionadded:: 2.2
908
909   .. versionchanged:: 2.3
910      Support for other error handling schemes added.
911
912   .. versionchanged:: 2.7
913      Support for keyword arguments added.
914
915.. method:: str.encode([encoding[,errors]])
916
917   Return an encoded version of the string.  Default encoding is the current
918   default string encoding.  *errors* may be given to set a different error
919   handling scheme.  The default for *errors* is ``'strict'``, meaning that
920   encoding errors raise a :exc:`UnicodeError`.  Other possible values are
921   ``'ignore'``, ``'replace'``, ``'xmlcharrefreplace'``, ``'backslashreplace'`` and
922   any other name registered via :func:`codecs.register_error`, see section
923   :ref:`codec-base-classes`. For a list of possible encodings, see section
924   :ref:`standard-encodings`.
925
926   .. versionadded:: 2.0
927
928   .. versionchanged:: 2.3
929      Support for ``'xmlcharrefreplace'`` and ``'backslashreplace'`` and other error
930      handling schemes added.
931
932   .. versionchanged:: 2.7
933      Support for keyword arguments added.
934
935.. method:: str.endswith(suffix[, start[, end]])
936
937   Return ``True`` if the string ends with the specified *suffix*, otherwise return
938   ``False``.  *suffix* can also be a tuple of suffixes to look for.  With optional
939   *start*, test beginning at that position.  With optional *end*, stop comparing
940   at that position.
941
942   .. versionchanged:: 2.5
943      Accept tuples as *suffix*.
944
945
946.. method:: str.expandtabs([tabsize])
947
948   Return a copy of the string where all tab characters are replaced by one or
949   more spaces, depending on the current column and the given tab size.  Tab
950   positions occur every *tabsize* characters (default is 8, giving tab
951   positions at columns 0, 8, 16 and so on).  To expand the string, the current
952   column is set to zero and the string is examined character by character.  If
953   the character is a tab (``\t``), one or more space characters are inserted
954   in the result until the current column is equal to the next tab position.
955   (The tab character itself is not copied.)  If the character is a newline
956   (``\n``) or return (``\r``), it is copied and the current column is reset to
957   zero.  Any other character is copied unchanged and the current column is
958   incremented by one regardless of how the character is represented when
959   printed.
960
961      >>> '01\t012\t0123\t01234'.expandtabs()
962      '01      012     0123    01234'
963      >>> '01\t012\t0123\t01234'.expandtabs(4)
964      '01  012 0123    01234'
965
966
967.. method:: str.find(sub[, start[, end]])
968
969   Return the lowest index in the string where substring *sub* is found within
970   the slice ``s[start:end]``.  Optional arguments *start* and *end* are
971   interpreted as in slice notation.  Return ``-1`` if *sub* is not found.
972
973   .. note::
974
975      The :meth:`~str.find` method should be used only if you need to know the
976      position of *sub*.  To check if *sub* is a substring or not, use the
977      :keyword:`in` operator::
978
979         >>> 'Py' in 'Python'
980         True
981
982
983.. method:: str.format(*args, **kwargs)
984
985   Perform a string formatting operation.  The string on which this method is
986   called can contain literal text or replacement fields delimited by braces
987   ``{}``.  Each replacement field contains either the numeric index of a
988   positional argument, or the name of a keyword argument.  Returns a copy of
989   the string where each replacement field is replaced with the string value of
990   the corresponding argument.
991
992      >>> "The sum of 1 + 2 is {0}".format(1+2)
993      'The sum of 1 + 2 is 3'
994
995   See :ref:`formatstrings` for a description of the various formatting options
996   that can be specified in format strings.
997
998   This method of string formatting is the new standard in Python 3, and
999   should be preferred to the ``%`` formatting described in
1000   :ref:`string-formatting` in new code.
1001
1002   .. versionadded:: 2.6
1003
1004
1005.. method:: str.index(sub[, start[, end]])
1006
1007   Like :meth:`find`, but raise :exc:`ValueError` when the substring is not found.
1008
1009
1010.. method:: str.isalnum()
1011
1012   Return true if all characters in the string are alphanumeric and there is at
1013   least one character, false otherwise.
1014
1015   For 8-bit strings, this method is locale-dependent.
1016
1017
1018.. method:: str.isalpha()
1019
1020   Return true if all characters in the string are alphabetic and there is at least
1021   one character, false otherwise.
1022
1023   For 8-bit strings, this method is locale-dependent.
1024
1025
1026.. method:: str.isdigit()
1027
1028   Return true if all characters in the string are digits and there is at least one
1029   character, false otherwise.
1030
1031   For 8-bit strings, this method is locale-dependent.
1032
1033
1034.. method:: str.islower()
1035
1036   Return true if all cased characters [4]_ in the string are lowercase and there is at
1037   least one cased character, false otherwise.
1038
1039   For 8-bit strings, this method is locale-dependent.
1040
1041
1042.. method:: str.isspace()
1043
1044   Return true if there are only whitespace characters in the string and there is
1045   at least one character, false otherwise.
1046
1047   For 8-bit strings, this method is locale-dependent.
1048
1049
1050.. method:: str.istitle()
1051
1052   Return true if the string is a titlecased string and there is at least one
1053   character, for example uppercase characters may only follow uncased characters
1054   and lowercase characters only cased ones.  Return false otherwise.
1055
1056   For 8-bit strings, this method is locale-dependent.
1057
1058
1059.. method:: str.isupper()
1060
1061   Return true if all cased characters [4]_ in the string are uppercase and there is at
1062   least one cased character, false otherwise.
1063
1064   For 8-bit strings, this method is locale-dependent.
1065
1066
1067.. method:: str.join(iterable)
1068
1069   Return a string which is the concatenation of the strings in the
1070   :term:`iterable` *iterable*.  The separator between elements is the string
1071   providing this method.
1072
1073
1074.. method:: str.ljust(width[, fillchar])
1075
1076   Return the string left justified in a string of length *width*. Padding is done
1077   using the specified *fillchar* (default is a space).  The original string is
1078   returned if *width* is less than or equal to ``len(s)``.
1079
1080   .. versionchanged:: 2.4
1081      Support for the *fillchar* argument.
1082
1083
1084.. method:: str.lower()
1085
1086   Return a copy of the string with all the cased characters [4]_ converted to
1087   lowercase.
1088
1089   For 8-bit strings, this method is locale-dependent.
1090
1091
1092.. method:: str.lstrip([chars])
1093
1094   Return a copy of the string with leading characters removed.  The *chars*
1095   argument is a string specifying the set of characters to be removed.  If omitted
1096   or ``None``, the *chars* argument defaults to removing whitespace.  The *chars*
1097   argument is not a prefix; rather, all combinations of its values are stripped:
1098
1099      >>> '   spacious   '.lstrip()
1100      'spacious   '
1101      >>> 'www.example.com'.lstrip('cmowz.')
1102      'example.com'
1103
1104   .. versionchanged:: 2.2.2
1105      Support for the *chars* argument.
1106
1107
1108.. method:: str.partition(sep)
1109
1110   Split the string at the first occurrence of *sep*, and return a 3-tuple
1111   containing the part before the separator, the separator itself, and the part
1112   after the separator.  If the separator is not found, return a 3-tuple containing
1113   the string itself, followed by two empty strings.
1114
1115   .. versionadded:: 2.5
1116
1117
1118.. method:: str.replace(old, new[, count])
1119
1120   Return a copy of the string with all occurrences of substring *old* replaced by
1121   *new*.  If the optional argument *count* is given, only the first *count*
1122   occurrences are replaced.
1123
1124
1125.. method:: str.rfind(sub [,start [,end]])
1126
1127   Return the highest index in the string where substring *sub* is found, such
1128   that *sub* is contained within ``s[start:end]``.  Optional arguments *start*
1129   and *end* are interpreted as in slice notation.  Return ``-1`` on failure.
1130
1131
1132.. method:: str.rindex(sub[, start[, end]])
1133
1134   Like :meth:`rfind` but raises :exc:`ValueError` when the substring *sub* is not
1135   found.
1136
1137
1138.. method:: str.rjust(width[, fillchar])
1139
1140   Return the string right justified in a string of length *width*. Padding is done
1141   using the specified *fillchar* (default is a space). The original string is
1142   returned if *width* is less than or equal to ``len(s)``.
1143
1144   .. versionchanged:: 2.4
1145      Support for the *fillchar* argument.
1146
1147
1148.. method:: str.rpartition(sep)
1149
1150   Split the string at the last occurrence of *sep*, and return a 3-tuple
1151   containing the part before the separator, the separator itself, and the part
1152   after the separator.  If the separator is not found, return a 3-tuple containing
1153   two empty strings, followed by the string itself.
1154
1155   .. versionadded:: 2.5
1156
1157
1158.. method:: str.rsplit([sep [,maxsplit]])
1159
1160   Return a list of the words in the string, using *sep* as the delimiter string.
1161   If *maxsplit* is given, at most *maxsplit* splits are done, the *rightmost*
1162   ones.  If *sep* is not specified or ``None``, any whitespace string is a
1163   separator.  Except for splitting from the right, :meth:`rsplit` behaves like
1164   :meth:`split` which is described in detail below.
1165
1166   .. versionadded:: 2.4
1167
1168
1169.. method:: str.rstrip([chars])
1170
1171   Return a copy of the string with trailing characters removed.  The *chars*
1172   argument is a string specifying the set of characters to be removed.  If omitted
1173   or ``None``, the *chars* argument defaults to removing whitespace.  The *chars*
1174   argument is not a suffix; rather, all combinations of its values are stripped:
1175
1176      >>> '   spacious   '.rstrip()
1177      '   spacious'
1178      >>> 'mississippi'.rstrip('ipz')
1179      'mississ'
1180
1181   .. versionchanged:: 2.2.2
1182      Support for the *chars* argument.
1183
1184
1185.. method:: str.split([sep[, maxsplit]])
1186
1187   Return a list of the words in the string, using *sep* as the delimiter
1188   string.  If *maxsplit* is given, at most *maxsplit* splits are done (thus,
1189   the list will have at most ``maxsplit+1`` elements).  If *maxsplit* is not
1190   specified or ``-1``, then there is no limit on the number of splits
1191   (all possible splits are made).
1192
1193   If *sep* is given, consecutive delimiters are not grouped together and are
1194   deemed to delimit empty strings (for example, ``'1,,2'.split(',')`` returns
1195   ``['1', '', '2']``).  The *sep* argument may consist of multiple characters
1196   (for example, ``'1<>2<>3'.split('<>')`` returns ``['1', '2', '3']``).
1197   Splitting an empty string with a specified separator returns ``['']``.
1198
1199   If *sep* is not specified or is ``None``, a different splitting algorithm is
1200   applied: runs of consecutive whitespace are regarded as a single separator,
1201   and the result will contain no empty strings at the start or end if the
1202   string has leading or trailing whitespace.  Consequently, splitting an empty
1203   string or a string consisting of just whitespace with a ``None`` separator
1204   returns ``[]``.
1205
1206   For example, ``' 1  2   3  '.split()`` returns ``['1', '2', '3']``, and
1207   ``'  1  2   3  '.split(None, 1)`` returns ``['1', '2   3  ']``.
1208
1209
1210.. index::
1211   single: universal newlines; str.splitlines method
1212
1213.. method:: str.splitlines([keepends])
1214
1215   Return a list of the lines in the string, breaking at line boundaries.
1216   This method uses the :term:`universal newlines` approach to splitting lines.
1217   Line breaks are not included in the resulting list unless *keepends* is
1218   given and true.
1219
1220   Python recognizes ``"\r"``, ``"\n"``, and ``"\r\n"`` as line boundaries for
1221   8-bit strings.
1222
1223   For example::
1224
1225      >>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
1226      ['ab c', '', 'de fg', 'kl']
1227      >>> 'ab c\n\nde fg\rkl\r\n'.splitlines(True)
1228      ['ab c\n', '\n', 'de fg\r', 'kl\r\n']
1229
1230   Unlike :meth:`~str.split` when a delimiter string *sep* is given, this
1231   method returns an empty list for the empty string, and a terminal line
1232   break does not result in an extra line::
1233
1234      >>> "".splitlines()
1235      []
1236      >>> "One line\n".splitlines()
1237      ['One line']
1238
1239   For comparison, ``split('\n')`` gives::
1240
1241      >>> ''.split('\n')
1242      ['']
1243      >>> 'Two lines\n'.split('\n')
1244      ['Two lines', '']
1245
1246.. method:: unicode.splitlines([keepends])
1247
1248   Return a list of the lines in the string, like :meth:`str.splitlines`.
1249   However, the Unicode method splits on the following line boundaries,
1250   which are a superset of the :term:`universal newlines` recognized for
1251   8-bit strings.
1252
1253   +-----------------------+-----------------------------+
1254   | Representation        | Description                 |
1255   +=======================+=============================+
1256   | ``\n``                | Line Feed                   |
1257   +-----------------------+-----------------------------+
1258   | ``\r``                | Carriage Return             |
1259   +-----------------------+-----------------------------+
1260   | ``\r\n``              | Carriage Return + Line Feed |
1261   +-----------------------+-----------------------------+
1262   | ``\v`` or ``\x0b``    | Line Tabulation             |
1263   +-----------------------+-----------------------------+
1264   | ``\f`` or ``\x0c``    | Form Feed                   |
1265   +-----------------------+-----------------------------+
1266   | ``\x1c``              | File Separator              |
1267   +-----------------------+-----------------------------+
1268   | ``\x1d``              | Group Separator             |
1269   +-----------------------+-----------------------------+
1270   | ``\x1e``              | Record Separator            |
1271   +-----------------------+-----------------------------+
1272   | ``\x85``              | Next Line (C1 Control Code) |
1273   +-----------------------+-----------------------------+
1274   | ``\u2028``            | Line Separator              |
1275   +-----------------------+-----------------------------+
1276   | ``\u2029``            | Paragraph Separator         |
1277   +-----------------------+-----------------------------+
1278
1279   .. versionchanged:: 2.7
1280
1281      ``\v`` and ``\f`` added to list of line boundaries.
1282
1283
1284.. method:: str.startswith(prefix[, start[, end]])
1285
1286   Return ``True`` if string starts with the *prefix*, otherwise return ``False``.
1287   *prefix* can also be a tuple of prefixes to look for.  With optional *start*,
1288   test string beginning at that position.  With optional *end*, stop comparing
1289   string at that position.
1290
1291   .. versionchanged:: 2.5
1292      Accept tuples as *prefix*.
1293
1294
1295.. method:: str.strip([chars])
1296
1297   Return a copy of the string with the leading and trailing characters removed.
1298   The *chars* argument is a string specifying the set of characters to be removed.
1299   If omitted or ``None``, the *chars* argument defaults to removing whitespace.
1300   The *chars* argument is not a prefix or suffix; rather, all combinations of its
1301   values are stripped:
1302
1303      >>> '   spacious   '.strip()
1304      'spacious'
1305      >>> 'www.example.com'.strip('cmowz.')
1306      'example'
1307
1308   .. versionchanged:: 2.2.2
1309      Support for the *chars* argument.
1310
1311
1312.. method:: str.swapcase()
1313
1314   Return a copy of the string with uppercase characters converted to lowercase and
1315   vice versa.
1316
1317   For 8-bit strings, this method is locale-dependent.
1318
1319
1320.. method:: str.title()
1321
1322   Return a titlecased version of the string where words start with an uppercase
1323   character and the remaining characters are lowercase.
1324
1325   The algorithm uses a simple language-independent definition of a word as
1326   groups of consecutive letters.  The definition works in many contexts but
1327   it means that apostrophes in contractions and possessives form word
1328   boundaries, which may not be the desired result::
1329
1330        >>> "they're bill's friends from the UK".title()
1331        "They'Re Bill'S Friends From The Uk"
1332
1333   A workaround for apostrophes can be constructed using regular expressions::
1334
1335        >>> import re
1336        >>> def titlecase(s):
1337        ...     return re.sub(r"[A-Za-z]+('[A-Za-z]+)?",
1338        ...                   lambda mo: mo.group(0)[0].upper() +
1339        ...                              mo.group(0)[1:].lower(),
1340        ...                   s)
1341        ...
1342        >>> titlecase("they're bill's friends.")
1343        "They're Bill's Friends."
1344
1345   For 8-bit strings, this method is locale-dependent.
1346
1347
1348.. method:: str.translate(table[, deletechars])
1349
1350   Return a copy of the string where all characters occurring in the optional
1351   argument *deletechars* are removed, and the remaining characters have been
1352   mapped through the given translation table, which must be a string of length
1353   256.
1354
1355   You can use the :func:`~string.maketrans` helper function in the :mod:`string`
1356   module to create a translation table. For string objects, set the *table*
1357   argument to ``None`` for translations that only delete characters:
1358
1359      >>> 'read this short text'.translate(None, 'aeiou')
1360      'rd ths shrt txt'
1361
1362   .. versionadded:: 2.6
1363      Support for a ``None`` *table* argument.
1364
1365   For Unicode objects, the :meth:`translate` method does not accept the optional
1366   *deletechars* argument.  Instead, it returns a copy of the *s* where all
1367   characters have been mapped through the given translation table which must be a
1368   mapping of Unicode ordinals to Unicode ordinals, Unicode strings or ``None``.
1369   Unmapped characters are left untouched. Characters mapped to ``None`` are
1370   deleted.  Note, a more flexible approach is to create a custom character mapping
1371   codec using the :mod:`codecs` module (see :mod:`encodings.cp1251` for an
1372   example).
1373
1374
1375.. method:: str.upper()
1376
1377   Return a copy of the string with all the cased characters [4]_ converted to
1378   uppercase.  Note that ``str.upper().isupper()`` might be ``False`` if ``s``
1379   contains uncased characters or if the Unicode category of the resulting
1380   character(s) is not "Lu" (Letter, uppercase), but e.g. "Lt" (Letter, titlecase).
1381
1382   For 8-bit strings, this method is locale-dependent.
1383
1384
1385.. method:: str.zfill(width)
1386
1387   Return the numeric string left filled with zeros in a string of length
1388   *width*.  A sign prefix is handled correctly.  The original string is
1389   returned if *width* is less than or equal to ``len(s)``.
1390
1391
1392   .. versionadded:: 2.2.2
1393
1394The following methods are present only on unicode objects:
1395
1396.. method:: unicode.isnumeric()
1397
1398   Return ``True`` if there are only numeric characters in S, ``False``
1399   otherwise. Numeric characters include digit characters, and all characters
1400   that have the Unicode numeric value property, e.g. U+2155,
1401   VULGAR FRACTION ONE FIFTH.
1402
1403.. method:: unicode.isdecimal()
1404
1405   Return ``True`` if there are only decimal characters in S, ``False``
1406   otherwise. Decimal characters include digit characters, and all characters
1407   that can be used to form decimal-radix numbers, e.g. U+0660,
1408   ARABIC-INDIC DIGIT ZERO.
1409
1410
1411.. _string-formatting:
1412
1413String Formatting Operations
1414----------------------------
1415
1416.. index::
1417   single: formatting, string (%)
1418   single: interpolation, string (%)
1419   single: string; formatting
1420   single: string; interpolation
1421   single: printf-style formatting
1422   single: sprintf-style formatting
1423   single: % formatting
1424   single: % interpolation
1425
1426String and Unicode objects have one unique built-in operation: the ``%``
1427operator (modulo).  This is also known as the string *formatting* or
1428*interpolation* operator.  Given ``format % values`` (where *format* is a string
1429or Unicode object), ``%`` conversion specifications in *format* are replaced
1430with zero or more elements of *values*.  The effect is similar to the using
1431:c:func:`sprintf` in the C language.  If *format* is a Unicode object, or if any
1432of the objects being converted using the ``%s`` conversion are Unicode objects,
1433the result will also be a Unicode object.
1434
1435If *format* requires a single argument, *values* may be a single non-tuple
1436object. [5]_  Otherwise, *values* must be a tuple with exactly the number of
1437items specified by the format string, or a single mapping object (for example, a
1438dictionary).
1439
1440A conversion specifier contains two or more characters and has the following
1441components, which must occur in this order:
1442
1443#. The ``'%'`` character, which marks the start of the specifier.
1444
1445#. Mapping key (optional), consisting of a parenthesised sequence of characters
1446   (for example, ``(somename)``).
1447
1448#. Conversion flags (optional), which affect the result of some conversion
1449   types.
1450
1451#. Minimum field width (optional).  If specified as an ``'*'`` (asterisk), the
1452   actual width is read from the next element of the tuple in *values*, and the
1453   object to convert comes after the minimum field width and optional precision.
1454
1455#. Precision (optional), given as a ``'.'`` (dot) followed by the precision.  If
1456   specified as ``'*'`` (an asterisk), the actual width is read from the next
1457   element of the tuple in *values*, and the value to convert comes after the
1458   precision.
1459
1460#. Length modifier (optional).
1461
1462#. Conversion type.
1463
1464When the right argument is a dictionary (or other mapping type), then the
1465formats in the string *must* include a parenthesised mapping key into that
1466dictionary inserted immediately after the ``'%'`` character. The mapping key
1467selects the value to be formatted from the mapping.  For example:
1468
1469   >>> print '%(language)s has %(number)03d quote types.' % \
1470   ...       {"language": "Python", "number": 2}
1471   Python has 002 quote types.
1472
1473In this case no ``*`` specifiers may occur in a format (since they require a
1474sequential parameter list).
1475
1476The conversion flag characters are:
1477
1478+---------+---------------------------------------------------------------------+
1479| Flag    | Meaning                                                             |
1480+=========+=====================================================================+
1481| ``'#'`` | The value conversion will use the "alternate form" (where defined   |
1482|         | below).                                                             |
1483+---------+---------------------------------------------------------------------+
1484| ``'0'`` | The conversion will be zero padded for numeric values.              |
1485+---------+---------------------------------------------------------------------+
1486| ``'-'`` | The converted value is left adjusted (overrides the ``'0'``         |
1487|         | conversion if both are given).                                      |
1488+---------+---------------------------------------------------------------------+
1489| ``' '`` | (a space) A blank should be left before a positive number (or empty |
1490|         | string) produced by a signed conversion.                            |
1491+---------+---------------------------------------------------------------------+
1492| ``'+'`` | A sign character (``'+'`` or ``'-'``) will precede the conversion   |
1493|         | (overrides a "space" flag).                                         |
1494+---------+---------------------------------------------------------------------+
1495
1496A length modifier (``h``, ``l``, or ``L``) may be present, but is ignored as it
1497is not necessary for Python -- so e.g. ``%ld`` is identical to ``%d``.
1498
1499The conversion types are:
1500
1501+------------+-----------------------------------------------------+-------+
1502| Conversion | Meaning                                             | Notes |
1503+============+=====================================================+=======+
1504| ``'d'``    | Signed integer decimal.                             |       |
1505+------------+-----------------------------------------------------+-------+
1506| ``'i'``    | Signed integer decimal.                             |       |
1507+------------+-----------------------------------------------------+-------+
1508| ``'o'``    | Signed octal value.                                 | \(1)  |
1509+------------+-----------------------------------------------------+-------+
1510| ``'u'``    | Obsolete type -- it is identical to ``'d'``.        | \(7)  |
1511+------------+-----------------------------------------------------+-------+
1512| ``'x'``    | Signed hexadecimal (lowercase).                     | \(2)  |
1513+------------+-----------------------------------------------------+-------+
1514| ``'X'``    | Signed hexadecimal (uppercase).                     | \(2)  |
1515+------------+-----------------------------------------------------+-------+
1516| ``'e'``    | Floating point exponential format (lowercase).      | \(3)  |
1517+------------+-----------------------------------------------------+-------+
1518| ``'E'``    | Floating point exponential format (uppercase).      | \(3)  |
1519+------------+-----------------------------------------------------+-------+
1520| ``'f'``    | Floating point decimal format.                      | \(3)  |
1521+------------+-----------------------------------------------------+-------+
1522| ``'F'``    | Floating point decimal format.                      | \(3)  |
1523+------------+-----------------------------------------------------+-------+
1524| ``'g'``    | Floating point format. Uses lowercase exponential   | \(4)  |
1525|            | format if exponent is less than -4 or not less than |       |
1526|            | precision, decimal format otherwise.                |       |
1527+------------+-----------------------------------------------------+-------+
1528| ``'G'``    | Floating point format. Uses uppercase exponential   | \(4)  |
1529|            | format if exponent is less than -4 or not less than |       |
1530|            | precision, decimal format otherwise.                |       |
1531+------------+-----------------------------------------------------+-------+
1532| ``'c'``    | Single character (accepts integer or single         |       |
1533|            | character string).                                  |       |
1534+------------+-----------------------------------------------------+-------+
1535| ``'r'``    | String (converts any Python object using            | \(5)  |
1536|            | :ref:`repr() <func-repr>`).                         |       |
1537+------------+-----------------------------------------------------+-------+
1538| ``'s'``    | String (converts any Python object using            | \(6)  |
1539|            | :func:`str`).                                       |       |
1540+------------+-----------------------------------------------------+-------+
1541| ``'%'``    | No argument is converted, results in a ``'%'``      |       |
1542|            | character in the result.                            |       |
1543+------------+-----------------------------------------------------+-------+
1544
1545Notes:
1546
1547(1)
1548   The alternate form causes a leading zero (``'0'``) to be inserted between
1549   left-hand padding and the formatting of the number if the leading character
1550   of the result is not already a zero.
1551
1552(2)
1553   The alternate form causes a leading ``'0x'`` or ``'0X'`` (depending on whether
1554   the ``'x'`` or ``'X'`` format was used) to be inserted between left-hand padding
1555   and the formatting of the number if the leading character of the result is not
1556   already a zero.
1557
1558(3)
1559   The alternate form causes the result to always contain a decimal point, even if
1560   no digits follow it.
1561
1562   The precision determines the number of digits after the decimal point and
1563   defaults to 6.
1564
1565(4)
1566   The alternate form causes the result to always contain a decimal point, and
1567   trailing zeroes are not removed as they would otherwise be.
1568
1569   The precision determines the number of significant digits before and after the
1570   decimal point and defaults to 6.
1571
1572(5)
1573   The ``%r`` conversion was added in Python 2.0.
1574
1575   The precision determines the maximal number of characters used.
1576
1577(6)
1578   If the object or format provided is a :class:`unicode` string, the resulting
1579   string will also be :class:`unicode`.
1580
1581   The precision determines the maximal number of characters used.
1582
1583(7)
1584   See :pep:`237`.
1585
1586Since Python strings have an explicit length, ``%s`` conversions do not assume
1587that ``'\0'`` is the end of the string.
1588
1589.. XXX Examples?
1590
1591.. versionchanged:: 2.7
1592   ``%f`` conversions for numbers whose absolute value is over 1e50 are no
1593   longer replaced by ``%g`` conversions.
1594
1595.. index::
1596   module: string
1597   module: re
1598
1599Additional string operations are defined in standard modules :mod:`string` and
1600:mod:`re`.
1601
1602
1603.. _typesseq-xrange:
1604
1605XRange Type
1606-----------
1607
1608.. index:: object: xrange
1609
1610The :class:`xrange` type is an immutable sequence which is commonly used for
1611looping.  The advantage of the :class:`xrange` type is that an :class:`xrange`
1612object will always take the same amount of memory, no matter the size of the
1613range it represents.  There are no consistent performance advantages.
1614
1615XRange objects have very little behavior: they only support indexing, iteration,
1616and the :func:`len` function.
1617
1618
1619.. _typesseq-mutable:
1620
1621Mutable Sequence Types
1622----------------------
1623
1624.. index::
1625   triple: mutable; sequence; types
1626   object: list
1627
1628List and :class:`bytearray` objects support additional operations that allow
1629in-place modification of the object. Other mutable sequence types (when added
1630to the language) should also support these operations. Strings and tuples
1631are immutable sequence types: such objects cannot be modified once created.
1632The following operations are defined on mutable sequence types (where *x* is
1633an arbitrary object):
1634
1635.. index::
1636   triple: operations on; sequence; types
1637   triple: operations on; list; type
1638   pair: subscript; assignment
1639   pair: slice; assignment
1640   pair: extended slice; assignment
1641   statement: del
1642   single: append() (list method)
1643   single: extend() (list method)
1644   single: count() (list method)
1645   single: index() (list method)
1646   single: insert() (list method)
1647   single: pop() (list method)
1648   single: remove() (list method)
1649   single: reverse() (list method)
1650   single: sort() (list method)
1651
1652+------------------------------+--------------------------------+---------------------+
1653| Operation                    | Result                         | Notes               |
1654+==============================+================================+=====================+
1655| ``s[i] = x``                 | item *i* of *s* is replaced by |                     |
1656|                              | *x*                            |                     |
1657+------------------------------+--------------------------------+---------------------+
1658| ``s[i:j] = t``               | slice of *s* from *i* to *j*   |                     |
1659|                              | is replaced by the contents of |                     |
1660|                              | the iterable *t*               |                     |
1661+------------------------------+--------------------------------+---------------------+
1662| ``del s[i:j]``               | same as ``s[i:j] = []``        |                     |
1663+------------------------------+--------------------------------+---------------------+
1664| ``s[i:j:k] = t``             | the elements of ``s[i:j:k]``   | \(1)                |
1665|                              | are replaced by those of *t*   |                     |
1666+------------------------------+--------------------------------+---------------------+
1667| ``del s[i:j:k]``             | removes the elements of        |                     |
1668|                              | ``s[i:j:k]`` from the list     |                     |
1669+------------------------------+--------------------------------+---------------------+
1670| ``s.append(x)``              | same as ``s[len(s):len(s)] =   | \(2)                |
1671|                              | [x]``                          |                     |
1672+------------------------------+--------------------------------+---------------------+
1673| ``s.extend(t)`` or           | for the most part the same as  | \(3)                |
1674| ``s += t``                   | ``s[len(s):len(s)] = t``       |                     |
1675+------------------------------+--------------------------------+---------------------+
1676| ``s *= n``                   | updates *s* with its contents  | \(11)               |
1677|                              | repeated *n* times             |                     |
1678+------------------------------+--------------------------------+---------------------+
1679| ``s.count(x)``               | return number of *i*'s for     |                     |
1680|                              | which ``s[i] == x``            |                     |
1681+------------------------------+--------------------------------+---------------------+
1682| ``s.index(x[, i[, j]])``     | return smallest *k* such that  | \(4)                |
1683|                              | ``s[k] == x`` and ``i <= k <   |                     |
1684|                              | j``                            |                     |
1685+------------------------------+--------------------------------+---------------------+
1686| ``s.insert(i, x)``           | same as ``s[i:i] = [x]``       | \(5)                |
1687+------------------------------+--------------------------------+---------------------+
1688| ``s.pop([i])``               | same as ``x = s[i]; del s[i];  | \(6)                |
1689|                              | return x``                     |                     |
1690+------------------------------+--------------------------------+---------------------+
1691| ``s.remove(x)``              | same as ``del s[s.index(x)]``  | \(4)                |
1692+------------------------------+--------------------------------+---------------------+
1693| ``s.reverse()``              | reverses the items of *s* in   | \(7)                |
1694|                              | place                          |                     |
1695+------------------------------+--------------------------------+---------------------+
1696| ``s.sort([cmp[, key[,        | sort the items of *s* in place | (7)(8)(9)(10)       |
1697| reverse]]])``                |                                |                     |
1698+------------------------------+--------------------------------+---------------------+
1699
1700Notes:
1701
1702(1)
1703   *t* must have the same length as the slice it is  replacing.
1704
1705(2)
1706   The C implementation of Python has historically accepted multiple parameters and
1707   implicitly joined them into a tuple; this no longer works in Python 2.0.  Use of
1708   this misfeature has been deprecated since Python 1.4.
1709
1710(3)
1711   *t* can be any iterable object.
1712
1713(4)
1714   Raises :exc:`ValueError` when *x* is not found in *s*. When a negative index is
1715   passed as the second or third parameter to the :meth:`index` method, the list
1716   length is added, as for slice indices.  If it is still negative, it is truncated
1717   to zero, as for slice indices.
1718
1719   .. versionchanged:: 2.3
1720      Previously, :meth:`index` didn't have arguments for specifying start and stop
1721      positions.
1722
1723(5)
1724   When a negative index is passed as the first parameter to the :meth:`insert`
1725   method, the list length is added, as for slice indices.  If it is still
1726   negative, it is truncated to zero, as for slice indices.
1727
1728   .. versionchanged:: 2.3
1729      Previously, all negative indices were truncated to zero.
1730
1731(6)
1732   The :meth:`pop` method's optional argument *i* defaults to ``-1``, so that
1733   by default the last item is removed and returned.
1734
1735(7)
1736   The :meth:`sort` and :meth:`reverse` methods modify the list in place for
1737   economy of space when sorting or reversing a large list.  To remind you that
1738   they operate by side effect, they don't return the sorted or reversed list.
1739
1740(8)
1741   The :meth:`sort` method takes optional arguments for controlling the
1742   comparisons.
1743
1744   *cmp* specifies a custom comparison function of two arguments (list items) which
1745   should return a negative, zero or positive number depending on whether the first
1746   argument is considered smaller than, equal to, or larger than the second
1747   argument: ``cmp=lambda x,y: cmp(x.lower(), y.lower())``.  The default value
1748   is ``None``.
1749
1750   *key* specifies a function of one argument that is used to extract a comparison
1751   key from each list element: ``key=str.lower``.  The default value is ``None``.
1752
1753   *reverse* is a boolean value.  If set to ``True``, then the list elements are
1754   sorted as if each comparison were reversed.
1755
1756   In general, the *key* and *reverse* conversion processes are much faster than
1757   specifying an equivalent *cmp* function.  This is because *cmp* is called
1758   multiple times for each list element while *key* and *reverse* touch each
1759   element only once.  Use :func:`functools.cmp_to_key` to convert an
1760   old-style *cmp* function to a *key* function.
1761
1762   .. versionchanged:: 2.3
1763      Support for ``None`` as an equivalent to omitting *cmp* was added.
1764
1765   .. versionchanged:: 2.4
1766      Support for *key* and *reverse* was added.
1767
1768(9)
1769   Starting with Python 2.3, the :meth:`sort` method is guaranteed to be stable.  A
1770   sort is stable if it guarantees not to change the relative order of elements
1771   that compare equal --- this is helpful for sorting in multiple passes (for
1772   example, sort by department, then by salary grade).
1773
1774(10)
1775   .. impl-detail::
1776
1777      While a list is being sorted, the effect of attempting to mutate, or even
1778      inspect, the list is undefined.  The C implementation of Python 2.3 and
1779      newer makes the list appear empty for the duration, and raises
1780      :exc:`ValueError` if it can detect that the list has been mutated during a
1781      sort.
1782
1783(11)
1784   The value *n* is an integer, or an object implementing
1785   :meth:`~object.__index__`.  Zero and negative values of *n* clear
1786   the sequence.  Items in the sequence are not copied; they are referenced
1787   multiple times, as explained for ``s * n`` under :ref:`typesseq`.
1788
1789
1790.. _types-set:
1791
1792Set Types --- :class:`set`, :class:`frozenset`
1793==============================================
1794
1795.. index:: object: set
1796
1797A :dfn:`set` object is an unordered collection of distinct :term:`hashable` objects.
1798Common uses include membership testing, removing duplicates from a sequence, and
1799computing mathematical operations such as intersection, union, difference, and
1800symmetric difference.
1801(For other containers see the built in :class:`dict`, :class:`list`,
1802and :class:`tuple` classes, and the :mod:`collections` module.)
1803
1804
1805.. versionadded:: 2.4
1806
1807Like other collections, sets support ``x in set``, ``len(set)``, and ``for x in
1808set``.  Being an unordered collection, sets do not record element position or
1809order of insertion.  Accordingly, sets do not support indexing, slicing, or
1810other sequence-like behavior.
1811
1812There are currently two built-in set types, :class:`set` and :class:`frozenset`.
1813The :class:`set` type is mutable --- the contents can be changed using methods
1814like :meth:`~set.add` and :meth:`~set.remove`.  Since it is mutable, it has no
1815hash value and cannot be used as either a dictionary key or as an element of
1816another set.  The :class:`frozenset` type is immutable and :term:`hashable` ---
1817its contents cannot be altered after it is created; it can therefore be used as
1818a dictionary key or as an element of another set.
1819
1820As of Python 2.7, non-empty sets (not frozensets) can be created by placing a
1821comma-separated list of elements within braces, for example: ``{'jack',
1822'sjoerd'}``, in addition to the :class:`set` constructor.
1823
1824The constructors for both classes work the same:
1825
1826.. class:: set([iterable])
1827           frozenset([iterable])
1828
1829   Return a new set or frozenset object whose elements are taken from
1830   *iterable*.  The elements of a set must be :term:`hashable`.  To
1831   represent sets of sets, the inner sets must be :class:`frozenset`
1832   objects.  If *iterable* is not specified, a new empty set is
1833   returned.
1834
1835   Instances of :class:`set` and :class:`frozenset` provide the following
1836   operations:
1837
1838   .. describe:: len(s)
1839
1840      Return the number of elements in set *s* (cardinality of *s*).
1841
1842   .. describe:: x in s
1843
1844      Test *x* for membership in *s*.
1845
1846   .. describe:: x not in s
1847
1848      Test *x* for non-membership in *s*.
1849
1850   .. method:: isdisjoint(other)
1851
1852      Return ``True`` if the set has no elements in common with *other*.  Sets are
1853      disjoint if and only if their intersection is the empty set.
1854
1855      .. versionadded:: 2.6
1856
1857   .. method:: issubset(other)
1858               set <= other
1859
1860      Test whether every element in the set is in *other*.
1861
1862   .. method:: set < other
1863
1864      Test whether the set is a proper subset of *other*, that is,
1865      ``set <= other and set != other``.
1866
1867   .. method:: issuperset(other)
1868               set >= other
1869
1870      Test whether every element in *other* is in the set.
1871
1872   .. method:: set > other
1873
1874      Test whether the set is a proper superset of *other*, that is, ``set >=
1875      other and set != other``.
1876
1877   .. method:: union(*others)
1878               set | other | ...
1879
1880      Return a new set with elements from the set and all others.
1881
1882      .. versionchanged:: 2.6
1883         Accepts multiple input iterables.
1884
1885   .. method:: intersection(*others)
1886               set & other & ...
1887
1888      Return a new set with elements common to the set and all others.
1889
1890      .. versionchanged:: 2.6
1891         Accepts multiple input iterables.
1892
1893   .. method:: difference(*others)
1894               set - other - ...
1895
1896      Return a new set with elements in the set that are not in the others.
1897
1898      .. versionchanged:: 2.6
1899         Accepts multiple input iterables.
1900
1901   .. method:: symmetric_difference(other)
1902               set ^ other
1903
1904      Return a new set with elements in either the set or *other* but not both.
1905
1906   .. method:: copy()
1907
1908      Return a new set with a shallow copy of *s*.
1909
1910
1911   Note, the non-operator versions of :meth:`union`, :meth:`intersection`,
1912   :meth:`difference`, and :meth:`symmetric_difference`, :meth:`issubset`, and
1913   :meth:`issuperset` methods will accept any iterable as an argument.  In
1914   contrast, their operator based counterparts require their arguments to be
1915   sets.  This precludes error-prone constructions like ``set('abc') & 'cbs'``
1916   in favor of the more readable ``set('abc').intersection('cbs')``.
1917
1918   Both :class:`set` and :class:`frozenset` support set to set comparisons. Two
1919   sets are equal if and only if every element of each set is contained in the
1920   other (each is a subset of the other). A set is less than another set if and
1921   only if the first set is a proper subset of the second set (is a subset, but
1922   is not equal). A set is greater than another set if and only if the first set
1923   is a proper superset of the second set (is a superset, but is not equal).
1924
1925   Instances of :class:`set` are compared to instances of :class:`frozenset`
1926   based on their members.  For example, ``set('abc') == frozenset('abc')``
1927   returns ``True`` and so does ``set('abc') in set([frozenset('abc')])``.
1928
1929   The subset and equality comparisons do not generalize to a total ordering
1930   function.  For example, any two non-empty disjoint sets are not equal and are not
1931   subsets of each other, so *all* of the following return ``False``: ``a<b``,
1932   ``a==b``, or ``a>b``. Accordingly, sets do not implement the :meth:`__cmp__`
1933   method.
1934
1935   Since sets only define partial ordering (subset relationships), the output of
1936   the :meth:`list.sort` method is undefined for lists of sets.
1937
1938   Set elements, like dictionary keys, must be :term:`hashable`.
1939
1940   Binary operations that mix :class:`set` instances with :class:`frozenset`
1941   return the type of the first operand.  For example: ``frozenset('ab') |
1942   set('bc')`` returns an instance of :class:`frozenset`.
1943
1944   The following table lists operations available for :class:`set` that do not
1945   apply to immutable instances of :class:`frozenset`:
1946
1947   .. method:: update(*others)
1948               set |= other | ...
1949
1950      Update the set, adding elements from all others.
1951
1952      .. versionchanged:: 2.6
1953         Accepts multiple input iterables.
1954
1955   .. method:: intersection_update(*others)
1956               set &= other & ...
1957
1958      Update the set, keeping only elements found in it and all others.
1959
1960      .. versionchanged:: 2.6
1961         Accepts multiple input iterables.
1962
1963   .. method:: difference_update(*others)
1964               set -= other | ...
1965
1966      Update the set, removing elements found in others.
1967
1968      .. versionchanged:: 2.6
1969         Accepts multiple input iterables.
1970
1971   .. method:: symmetric_difference_update(other)
1972               set ^= other
1973
1974      Update the set, keeping only elements found in either set, but not in both.
1975
1976   .. method:: add(elem)
1977
1978      Add element *elem* to the set.
1979
1980   .. method:: remove(elem)
1981
1982      Remove element *elem* from the set.  Raises :exc:`KeyError` if *elem* is
1983      not contained in the set.
1984
1985   .. method:: discard(elem)
1986
1987      Remove element *elem* from the set if it is present.
1988
1989   .. method:: pop()
1990
1991      Remove and return an arbitrary element from the set.  Raises
1992      :exc:`KeyError` if the set is empty.
1993
1994   .. method:: clear()
1995
1996      Remove all elements from the set.
1997
1998
1999   Note, the non-operator versions of the :meth:`update`,
2000   :meth:`intersection_update`, :meth:`difference_update`, and
2001   :meth:`symmetric_difference_update` methods will accept any iterable as an
2002   argument.
2003
2004   Note, the *elem* argument to the :meth:`__contains__`, :meth:`remove`, and
2005   :meth:`discard` methods may be a set.  To support searching for an equivalent
2006   frozenset, the *elem* set is temporarily mutated during the search and then
2007   restored.  During the search, the *elem* set should not be read or mutated
2008   since it does not have a meaningful value.
2009
2010
2011.. seealso::
2012
2013   :ref:`comparison-to-builtin-set`
2014      Differences between the :mod:`sets` module and the built-in set types.
2015
2016
2017.. _typesmapping:
2018
2019Mapping Types --- :class:`dict`
2020===============================
2021
2022.. index::
2023   object: mapping
2024   object: dictionary
2025   triple: operations on; mapping; types
2026   triple: operations on; dictionary; type
2027   statement: del
2028   builtin: len
2029
2030A :term:`mapping` object maps :term:`hashable` values to arbitrary objects.
2031Mappings are mutable objects.  There is currently only one standard mapping
2032type, the :dfn:`dictionary`.  (For other containers see the built in
2033:class:`list`, :class:`set`, and :class:`tuple` classes, and the
2034:mod:`collections` module.)
2035
2036A dictionary's keys are *almost* arbitrary values.  Values that are not
2037:term:`hashable`, that is, values containing lists, dictionaries or other
2038mutable types (that are compared by value rather than by object identity) may
2039not be used as keys.  Numeric types used for keys obey the normal rules for
2040numeric comparison: if two numbers compare equal (such as ``1`` and ``1.0``)
2041then they can be used interchangeably to index the same dictionary entry.  (Note
2042however, that since computers store floating-point numbers as approximations it
2043is usually unwise to use them as dictionary keys.)
2044
2045Dictionaries can be created by placing a comma-separated list of ``key: value``
2046pairs within braces, for example: ``{'jack': 4098, 'sjoerd': 4127}`` or ``{4098:
2047'jack', 4127: 'sjoerd'}``, or by the :class:`dict` constructor.
2048
2049.. class:: dict(**kwarg)
2050           dict(mapping, **kwarg)
2051           dict(iterable, **kwarg)
2052
2053   Return a new dictionary initialized from an optional positional argument
2054   and a possibly empty set of keyword arguments.
2055
2056   If no positional argument is given, an empty dictionary is created.
2057   If a positional argument is given and it is a mapping object, a dictionary
2058   is created with the same key-value pairs as the mapping object.  Otherwise,
2059   the positional argument must be an :term:`iterable` object.  Each item in
2060   the iterable must itself be an iterable with exactly two objects.  The
2061   first object of each item becomes a key in the new dictionary, and the
2062   second object the corresponding value.  If a key occurs more than once, the
2063   last value for that key becomes the corresponding value in the new
2064   dictionary.
2065
2066   If keyword arguments are given, the keyword arguments and their values are
2067   added to the dictionary created from the positional argument.  If a key
2068   being added is already present, the value from the keyword argument
2069   replaces the value from the positional argument.
2070
2071   To illustrate, the following examples all return a dictionary equal to
2072   ``{"one": 1, "two": 2, "three": 3}``::
2073
2074      >>> a = dict(one=1, two=2, three=3)
2075      >>> b = {'one': 1, 'two': 2, 'three': 3}
2076      >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
2077      >>> d = dict([('two', 2), ('one', 1), ('three', 3)])
2078      >>> e = dict({'three': 3, 'one': 1, 'two': 2})
2079      >>> a == b == c == d == e
2080      True
2081
2082   Providing keyword arguments as in the first example only works for keys that
2083   are valid Python identifiers.  Otherwise, any valid keys can be used.
2084
2085   .. versionadded:: 2.2
2086
2087   .. versionchanged:: 2.3
2088      Support for building a dictionary from keyword arguments added.
2089
2090
2091   These are the operations that dictionaries support (and therefore, custom
2092   mapping types should support too):
2093
2094   .. describe:: len(d)
2095
2096      Return the number of items in the dictionary *d*.
2097
2098   .. describe:: d[key]
2099
2100      Return the item of *d* with key *key*.  Raises a :exc:`KeyError` if *key*
2101      is not in the map.
2102
2103      .. index:: __missing__()
2104
2105      If a subclass of dict defines a method :meth:`__missing__` and *key*
2106      is not present, the ``d[key]`` operation calls that method with the key *key*
2107      as argument.  The ``d[key]`` operation then returns or raises whatever is
2108      returned or raised by the ``__missing__(key)`` call.
2109      No other operations or methods invoke :meth:`__missing__`. If
2110      :meth:`__missing__` is not defined, :exc:`KeyError` is raised.
2111      :meth:`__missing__` must be a method; it cannot be an instance variable::
2112
2113          >>> class Counter(dict):
2114          ...     def __missing__(self, key):
2115          ...         return 0
2116          >>> c = Counter()
2117          >>> c['red']
2118          0
2119          >>> c['red'] += 1
2120          >>> c['red']
2121          1
2122
2123      The example above shows part of the implementation of
2124      :class:`collections.Counter`.  A different ``__missing__`` method is used
2125      by :class:`collections.defaultdict`.
2126
2127      .. versionadded:: 2.5
2128         Recognition of __missing__ methods of dict subclasses.
2129
2130   .. describe:: d[key] = value
2131
2132      Set ``d[key]`` to *value*.
2133
2134   .. describe:: del d[key]
2135
2136      Remove ``d[key]`` from *d*.  Raises a :exc:`KeyError` if *key* is not in the
2137      map.
2138
2139   .. describe:: key in d
2140
2141      Return ``True`` if *d* has a key *key*, else ``False``.
2142
2143      .. versionadded:: 2.2
2144
2145   .. describe:: key not in d
2146
2147      Equivalent to ``not key in d``.
2148
2149      .. versionadded:: 2.2
2150
2151   .. describe:: iter(d)
2152
2153      Return an iterator over the keys of the dictionary.  This is a shortcut
2154      for :meth:`iterkeys`.
2155
2156   .. method:: clear()
2157
2158      Remove all items from the dictionary.
2159
2160   .. method:: copy()
2161
2162      Return a shallow copy of the dictionary.
2163
2164   .. method:: fromkeys(seq[, value])
2165
2166      Create a new dictionary with keys from *seq* and values set to *value*.
2167
2168      :func:`fromkeys` is a class method that returns a new dictionary. *value*
2169      defaults to ``None``.
2170
2171      .. versionadded:: 2.3
2172
2173   .. method:: get(key[, default])
2174
2175      Return the value for *key* if *key* is in the dictionary, else *default*.
2176      If *default* is not given, it defaults to ``None``, so that this method
2177      never raises a :exc:`KeyError`.
2178
2179   .. method:: has_key(key)
2180
2181      Test for the presence of *key* in the dictionary.  :meth:`has_key` is
2182      deprecated in favor of ``key in d``.
2183
2184   .. method:: items()
2185
2186      Return a copy of the dictionary's list of ``(key, value)`` pairs.
2187
2188      .. impl-detail::
2189
2190         Keys and values are listed in an arbitrary order which is non-random,
2191         varies across Python implementations, and depends on the dictionary's
2192         history of insertions and deletions.
2193
2194      If :meth:`items`, :meth:`keys`, :meth:`values`, :meth:`iteritems`,
2195      :meth:`iterkeys`, and :meth:`itervalues` are called with no intervening
2196      modifications to the dictionary, the lists will directly correspond.  This
2197      allows the creation of ``(value, key)`` pairs using :func:`zip`: ``pairs =
2198      zip(d.values(), d.keys())``.  The same relationship holds for the
2199      :meth:`iterkeys` and :meth:`itervalues` methods: ``pairs =
2200      zip(d.itervalues(), d.iterkeys())`` provides the same value for
2201      ``pairs``. Another way to create the same list is ``pairs = [(v, k) for
2202      (k, v) in d.iteritems()]``.
2203
2204   .. method:: iteritems()
2205
2206      Return an iterator over the dictionary's ``(key, value)`` pairs.  See the
2207      note for :meth:`dict.items`.
2208
2209      Using :meth:`iteritems` while adding or deleting entries in the dictionary
2210      may raise a :exc:`RuntimeError` or fail to iterate over all entries.
2211
2212      .. versionadded:: 2.2
2213
2214   .. method:: iterkeys()
2215
2216      Return an iterator over the dictionary's keys.  See the note for
2217      :meth:`dict.items`.
2218
2219      Using :meth:`iterkeys` while adding or deleting entries in the dictionary
2220      may raise a :exc:`RuntimeError` or fail to iterate over all entries.
2221
2222      .. versionadded:: 2.2
2223
2224   .. method:: itervalues()
2225
2226      Return an iterator over the dictionary's values.  See the note for
2227      :meth:`dict.items`.
2228
2229      Using :meth:`itervalues` while adding or deleting entries in the
2230      dictionary may raise a :exc:`RuntimeError` or fail to iterate over all
2231      entries.
2232
2233      .. versionadded:: 2.2
2234
2235   .. method:: keys()
2236
2237      Return a copy of the dictionary's list of keys.  See the note for
2238      :meth:`dict.items`.
2239
2240   .. method:: pop(key[, default])
2241
2242      If *key* is in the dictionary, remove it and return its value, else return
2243      *default*.  If *default* is not given and *key* is not in the dictionary,
2244      a :exc:`KeyError` is raised.
2245
2246      .. versionadded:: 2.3
2247
2248   .. method:: popitem()
2249
2250      Remove and return an arbitrary ``(key, value)`` pair from the dictionary.
2251
2252      :func:`popitem` is useful to destructively iterate over a dictionary, as
2253      often used in set algorithms.  If the dictionary is empty, calling
2254      :func:`popitem` raises a :exc:`KeyError`.
2255
2256   .. method:: setdefault(key[, default])
2257
2258      If *key* is in the dictionary, return its value.  If not, insert *key*
2259      with a value of *default* and return *default*.  *default* defaults to
2260      ``None``.
2261
2262   .. method:: update([other])
2263
2264      Update the dictionary with the key/value pairs from *other*, overwriting
2265      existing keys.  Return ``None``.
2266
2267      :func:`update` accepts either another dictionary object or an iterable of
2268      key/value pairs (as tuples or other iterables of length two).  If keyword
2269      arguments are specified, the dictionary is then updated with those
2270      key/value pairs: ``d.update(red=1, blue=2)``.
2271
2272      .. versionchanged:: 2.4
2273          Allowed the argument to be an iterable of key/value pairs and allowed
2274          keyword arguments.
2275
2276   .. method:: values()
2277
2278      Return a copy of the dictionary's list of values.  See the note for
2279      :meth:`dict.items`.
2280
2281   .. method:: viewitems()
2282
2283      Return a new view of the dictionary's items (``(key, value)`` pairs).  See
2284      below for documentation of view objects.
2285
2286      .. versionadded:: 2.7
2287
2288   .. method:: viewkeys()
2289
2290      Return a new view of the dictionary's keys.  See below for documentation of
2291      view objects.
2292
2293      .. versionadded:: 2.7
2294
2295   .. method:: viewvalues()
2296
2297      Return a new view of the dictionary's values.  See below for documentation of
2298      view objects.
2299
2300      .. versionadded:: 2.7
2301
2302   Dictionaries compare equal if and only if they have the same ``(key,
2303   value)`` pairs.
2304
2305
2306.. _dict-views:
2307
2308Dictionary view objects
2309-----------------------
2310
2311The objects returned by :meth:`dict.viewkeys`, :meth:`dict.viewvalues` and
2312:meth:`dict.viewitems` are *view objects*.  They provide a dynamic view on the
2313dictionary's entries, which means that when the dictionary changes, the view
2314reflects these changes.
2315
2316Dictionary views can be iterated over to yield their respective data, and
2317support membership tests:
2318
2319.. describe:: len(dictview)
2320
2321   Return the number of entries in the dictionary.
2322
2323.. describe:: iter(dictview)
2324
2325   Return an iterator over the keys, values or items (represented as tuples of
2326   ``(key, value)``) in the dictionary.
2327
2328   Keys and values are iterated over in an arbitrary order which is non-random,
2329   varies across Python implementations, and depends on the dictionary's history
2330   of insertions and deletions. If keys, values and items views are iterated
2331   over with no intervening modifications to the dictionary, the order of items
2332   will directly correspond.  This allows the creation of ``(value, key)`` pairs
2333   using :func:`zip`: ``pairs = zip(d.values(), d.keys())``.  Another way to
2334   create the same list is ``pairs = [(v, k) for (k, v) in d.items()]``.
2335
2336   Iterating views while adding or deleting entries in the dictionary may raise
2337   a :exc:`RuntimeError` or fail to iterate over all entries.
2338
2339.. describe:: x in dictview
2340
2341   Return ``True`` if *x* is in the underlying dictionary's keys, values or
2342   items (in the latter case, *x* should be a ``(key, value)`` tuple).
2343
2344
2345Keys views are set-like since their entries are unique and hashable.  If all
2346values are hashable, so that (key, value) pairs are unique and hashable, then
2347the items view is also set-like.  (Values views are not treated as set-like
2348since the entries are generally not unique.)  Then these set operations are
2349available ("other" refers either to another view or a set):
2350
2351.. describe:: dictview & other
2352
2353   Return the intersection of the dictview and the other object as a new set.
2354
2355.. describe:: dictview | other
2356
2357   Return the union of the dictview and the other object as a new set.
2358
2359.. describe:: dictview - other
2360
2361   Return the difference between the dictview and the other object (all elements
2362   in *dictview* that aren't in *other*) as a new set.
2363
2364.. describe:: dictview ^ other
2365
2366   Return the symmetric difference (all elements either in *dictview* or
2367   *other*, but not in both) of the dictview and the other object as a new set.
2368
2369
2370An example of dictionary view usage::
2371
2372   >>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}
2373   >>> keys = dishes.viewkeys()
2374   >>> values = dishes.viewvalues()
2375
2376   >>> # iteration
2377   >>> n = 0
2378   >>> for val in values:
2379   ...     n += val
2380   >>> print(n)
2381   504
2382
2383   >>> # keys and values are iterated over in the same order
2384   >>> list(keys)
2385   ['eggs', 'bacon', 'sausage', 'spam']
2386   >>> list(values)
2387   [2, 1, 1, 500]
2388
2389   >>> # view objects are dynamic and reflect dict changes
2390   >>> del dishes['eggs']
2391   >>> del dishes['sausage']
2392   >>> list(keys)
2393   ['spam', 'bacon']
2394
2395   >>> # set operations
2396   >>> keys & {'eggs', 'bacon', 'salad'}
2397   {'bacon'}
2398
2399
2400.. _bltin-file-objects:
2401
2402File Objects
2403============
2404
2405.. index::
2406   object: file
2407   builtin: file
2408   module: os
2409   module: socket
2410
2411File objects are implemented using C's ``stdio`` package and can be
2412created with the built-in :func:`open` function.  File
2413objects are also returned by some other built-in functions and methods,
2414such as :func:`os.popen` and :func:`os.fdopen` and the :meth:`makefile`
2415method of socket objects. Temporary files can be created using the
2416:mod:`tempfile` module, and high-level file operations such as copying,
2417moving, and deleting files and directories can be achieved with the
2418:mod:`shutil` module.
2419
2420When a file operation fails for an I/O-related reason, the exception
2421:exc:`IOError` is raised.  This includes situations where the operation is not
2422defined for some reason, like :meth:`seek` on a tty device or writing a file
2423opened for reading.
2424
2425Files have the following methods:
2426
2427
2428.. method:: file.close()
2429
2430   Close the file.  A closed file cannot be read or written any more. Any operation
2431   which requires that the file be open will raise a :exc:`ValueError` after the
2432   file has been closed.  Calling :meth:`close` more than once is allowed.
2433
2434   As of Python 2.5, you can avoid having to call this method explicitly if you use
2435   the :keyword:`with` statement.  For example, the following code will
2436   automatically close *f* when the :keyword:`with` block is exited::
2437
2438      from __future__ import with_statement # This isn't required in Python 2.6
2439
2440      with open("hello.txt") as f:
2441          for line in f:
2442              print line,
2443
2444   In older versions of Python, you would have needed to do this to get the same
2445   effect::
2446
2447      f = open("hello.txt")
2448      try:
2449          for line in f:
2450              print line,
2451      finally:
2452          f.close()
2453
2454   .. note::
2455
2456      Not all "file-like" types in Python support use as a context manager for the
2457      :keyword:`with` statement.  If your code is intended to work with any file-like
2458      object, you can use the function :func:`contextlib.closing` instead of using
2459      the object directly.
2460
2461
2462.. method:: file.flush()
2463
2464   Flush the internal buffer, like ``stdio``'s :c:func:`fflush`.  This may be a
2465   no-op on some file-like objects.
2466
2467   .. note::
2468
2469      :meth:`flush` does not necessarily write the file's data to disk.  Use
2470      :meth:`flush` followed by :func:`os.fsync` to ensure this behavior.
2471
2472
2473.. method:: file.fileno()
2474
2475   .. index::
2476      pair: file; descriptor
2477      module: fcntl
2478
2479   Return the integer "file descriptor" that is used by the underlying
2480   implementation to request I/O operations from the operating system.  This can be
2481   useful for other, lower level interfaces that use file descriptors, such as the
2482   :mod:`fcntl` module or :func:`os.read` and friends.
2483
2484   .. note::
2485
2486      File-like objects which do not have a real file descriptor should *not* provide
2487      this method!
2488
2489
2490.. method:: file.isatty()
2491
2492   Return ``True`` if the file is connected to a tty(-like) device, else ``False``.
2493
2494   .. note::
2495
2496      If a file-like object is not associated with a real file, this method should
2497      *not* be implemented.
2498
2499
2500.. method:: file.next()
2501
2502   A file object is its own iterator, for example ``iter(f)`` returns *f* (unless
2503   *f* is closed).  When a file is used as an iterator, typically in a
2504   :keyword:`for` loop (for example, ``for line in f: print line.strip()``), the
2505   :meth:`~file.next` method is called repeatedly.  This method returns the next input
2506   line, or raises :exc:`StopIteration` when EOF is hit when the file is open for
2507   reading (behavior is undefined when the file is open for writing).  In order to
2508   make a :keyword:`for` loop the most efficient way of looping over the lines of a
2509   file (a very common operation), the :meth:`~file.next` method uses a hidden read-ahead
2510   buffer.  As a consequence of using a read-ahead buffer, combining :meth:`~file.next`
2511   with other file methods (like :meth:`~file.readline`) does not work right.  However,
2512   using :meth:`seek` to reposition the file to an absolute position will flush the
2513   read-ahead buffer.
2514
2515   .. versionadded:: 2.3
2516
2517
2518.. method:: file.read([size])
2519
2520   Read at most *size* bytes from the file (less if the read hits EOF before
2521   obtaining *size* bytes).  If the *size* argument is negative or omitted, read
2522   all data until EOF is reached.  The bytes are returned as a string object.  An
2523   empty string is returned when EOF is encountered immediately.  (For certain
2524   files, like ttys, it makes sense to continue reading after an EOF is hit.)  Note
2525   that this method may call the underlying C function :c:func:`fread` more than
2526   once in an effort to acquire as close to *size* bytes as possible. Also note
2527   that when in non-blocking mode, less data than was requested may be
2528   returned, even if no *size* parameter was given.
2529
2530   .. note::
2531      This function is simply a wrapper for the underlying
2532      :c:func:`fread` C function, and will behave the same in corner cases,
2533      such as whether the EOF value is cached.
2534
2535
2536.. method:: file.readline([size])
2537
2538   Read one entire line from the file.  A trailing newline character is kept in
2539   the string (but may be absent when a file ends with an incomplete line). [6]_
2540   If the *size* argument is present and non-negative, it is a maximum byte
2541   count (including the trailing newline) and an incomplete line may be
2542   returned. When *size* is not 0, an empty string is returned *only* when EOF
2543   is encountered immediately.
2544
2545   .. note::
2546
2547      Unlike ``stdio``'s :c:func:`fgets`, the returned string contains null characters
2548      (``'\0'``) if they occurred in the input.
2549
2550
2551.. method:: file.readlines([sizehint])
2552
2553   Read until EOF using :meth:`~file.readline` and return a list containing the lines
2554   thus read.  If the optional *sizehint* argument is present, instead of
2555   reading up to EOF, whole lines totalling approximately *sizehint* bytes
2556   (possibly after rounding up to an internal buffer size) are read.  Objects
2557   implementing a file-like interface may choose to ignore *sizehint* if it
2558   cannot be implemented, or cannot be implemented efficiently.
2559
2560
2561.. method:: file.xreadlines()
2562
2563   This method returns the same thing as ``iter(f)``.
2564
2565   .. versionadded:: 2.1
2566
2567   .. deprecated:: 2.3
2568      Use ``for line in file`` instead.
2569
2570
2571.. method:: file.seek(offset[, whence])
2572
2573   Set the file's current position, like ``stdio``'s :c:func:`fseek`. The *whence*
2574   argument is optional and defaults to  ``os.SEEK_SET`` or ``0`` (absolute file
2575   positioning); other values are ``os.SEEK_CUR`` or ``1`` (seek relative to the
2576   current position) and ``os.SEEK_END`` or ``2``  (seek relative to the file's
2577   end).  There is no return value.
2578
2579   For example, ``f.seek(2, os.SEEK_CUR)`` advances the position by two and
2580   ``f.seek(-3, os.SEEK_END)`` sets the position to the third to last.
2581
2582   Note that if the file is opened for appending
2583   (mode ``'a'`` or ``'a+'``), any :meth:`seek` operations will be undone at the
2584   next write.  If the file is only opened for writing in append mode (mode
2585   ``'a'``), this method is essentially a no-op, but it remains useful for files
2586   opened in append mode with reading enabled (mode ``'a+'``).  If the file is
2587   opened in text mode (without ``'b'``), only offsets returned by :meth:`tell` are
2588   legal.  Use of other offsets causes undefined behavior.
2589
2590   Note that not all file objects are seekable.
2591
2592   .. versionchanged:: 2.6
2593      Passing float values as offset has been deprecated.
2594
2595
2596.. method:: file.tell()
2597
2598   Return the file's current position, like ``stdio``'s :c:func:`ftell`.
2599
2600   .. note::
2601
2602      On Windows, :meth:`tell` can return illegal values (after an :c:func:`fgets`)
2603      when reading files with Unix-style line-endings. Use binary mode (``'rb'``) to
2604      circumvent this problem.
2605
2606
2607.. method:: file.truncate([size])
2608
2609   Truncate the file's size.  If the optional *size* argument is present, the file
2610   is truncated to (at most) that size.  The size defaults to the current position.
2611   The current file position is not changed.  Note that if a specified size exceeds
2612   the file's current size, the result is platform-dependent:  possibilities
2613   include that the file may remain unchanged, increase to the specified size as if
2614   zero-filled, or increase to the specified size with undefined new content.
2615   Availability:  Windows, many Unix variants.
2616
2617
2618.. method:: file.write(str)
2619
2620   Write a string to the file.  There is no return value.  Due to buffering, the
2621   string may not actually show up in the file until the :meth:`flush` or
2622   :meth:`close` method is called.
2623
2624
2625.. method:: file.writelines(sequence)
2626
2627   Write a sequence of strings to the file.  The sequence can be any iterable
2628   object producing strings, typically a list of strings. There is no return value.
2629   (The name is intended to match :meth:`readlines`; :meth:`writelines` does not
2630   add line separators.)
2631
2632Files support the iterator protocol.  Each iteration returns the same result as
2633:meth:`~file.readline`, and iteration ends when the :meth:`~file.readline` method returns
2634an empty string.
2635
2636File objects also offer a number of other interesting attributes. These are not
2637required for file-like objects, but should be implemented if they make sense for
2638the particular object.
2639
2640
2641.. attribute:: file.closed
2642
2643   bool indicating the current state of the file object.  This is a read-only
2644   attribute; the :meth:`close` method changes the value. It may not be available
2645   on all file-like objects.
2646
2647
2648.. attribute:: file.encoding
2649
2650   The encoding that this file uses. When Unicode strings are written to a file,
2651   they will be converted to byte strings using this encoding. In addition, when
2652   the file is connected to a terminal, the attribute gives the encoding that the
2653   terminal is likely to use (that  information might be incorrect if the user has
2654   misconfigured the  terminal). The attribute is read-only and may not be present
2655   on all file-like objects. It may also be ``None``, in which case the file uses
2656   the system default encoding for converting Unicode strings.
2657
2658   .. versionadded:: 2.3
2659
2660
2661.. attribute:: file.errors
2662
2663   The Unicode error handler used along with the encoding.
2664
2665   .. versionadded:: 2.6
2666
2667
2668.. attribute:: file.mode
2669
2670   The I/O mode for the file.  If the file was created using the :func:`open`
2671   built-in function, this will be the value of the *mode* parameter.  This is a
2672   read-only attribute and may not be present on all file-like objects.
2673
2674
2675.. attribute:: file.name
2676
2677   If the file object was created using :func:`open`, the name of the file.
2678   Otherwise, some string that indicates the source of the file object, of the
2679   form ``<...>``.  This is a read-only attribute and may not be present on all
2680   file-like objects.
2681
2682   .. index::
2683      single: universal newlines; file.newlines attribute
2684
2685
2686.. attribute:: file.newlines
2687
2688   If Python was built with :term:`universal newlines` enabled (the default) this
2689   read-only attribute exists, and for files opened in universal newline read
2690   mode it keeps track of the types of newlines encountered while reading the
2691   file. The values it can take are ``'\r'``, ``'\n'``, ``'\r\n'``, ``None``
2692   (unknown, no newlines read yet) or a tuple containing all the newline types
2693   seen, to indicate that multiple newline conventions were encountered. For
2694   files not opened in universal newlines read mode the value of this attribute
2695   will be ``None``.
2696
2697
2698.. attribute:: file.softspace
2699
2700   Boolean that indicates whether a space character needs to be printed before
2701   another value when using the :keyword:`print` statement. Classes that are trying
2702   to simulate a file object should also have a writable :attr:`softspace`
2703   attribute, which should be initialized to zero.  This will be automatic for most
2704   classes implemented in Python (care may be needed for objects that override
2705   attribute access); types implemented in C will have to provide a writable
2706   :attr:`softspace` attribute.
2707
2708   .. note::
2709
2710      This attribute is not used to control the :keyword:`print` statement, but to
2711      allow the implementation of :keyword:`print` to keep track of its internal
2712      state.
2713
2714
2715.. _typememoryview:
2716
2717memoryview type
2718===============
2719
2720.. versionadded:: 2.7
2721
2722:class:`memoryview` objects allow Python code to access the internal data
2723of an object that supports the buffer protocol without copying.  Memory
2724is generally interpreted as simple bytes.
2725
2726.. class:: memoryview(obj)
2727
2728   Create a :class:`memoryview` that references *obj*.  *obj* must support the
2729   buffer protocol.  Built-in objects that support the buffer protocol include
2730   :class:`str` and :class:`bytearray` (but not :class:`unicode`).
2731
2732   A :class:`memoryview` has the notion of an *element*, which is the
2733   atomic memory unit handled by the originating object *obj*.  For many
2734   simple types such as :class:`str` and :class:`bytearray`, an element
2735   is a single byte, but other third-party types may expose larger elements.
2736
2737   ``len(view)`` returns the total number of elements in the memoryview,
2738   *view*.  The :class:`~memoryview.itemsize` attribute will give you the
2739   number of bytes in a single element.
2740
2741   A :class:`memoryview` supports slicing to expose its data.  Taking a single
2742   index will return a single element as a :class:`str` object.  Full
2743   slicing will result in a subview::
2744
2745      >>> v = memoryview('abcefg')
2746      >>> v[1]
2747      'b'
2748      >>> v[-1]
2749      'g'
2750      >>> v[1:4]
2751      <memory at 0x77ab28>
2752      >>> v[1:4].tobytes()
2753      'bce'
2754
2755   If the object the memoryview is over supports changing its data, the
2756   memoryview supports slice assignment::
2757
2758      >>> data = bytearray('abcefg')
2759      >>> v = memoryview(data)
2760      >>> v.readonly
2761      False
2762      >>> v[0] = 'z'
2763      >>> data
2764      bytearray(b'zbcefg')
2765      >>> v[1:4] = '123'
2766      >>> data
2767      bytearray(b'z123fg')
2768      >>> v[2] = 'spam'
2769      Traceback (most recent call last):
2770        File "<stdin>", line 1, in <module>
2771      ValueError: cannot modify size of memoryview object
2772
2773   Notice how the size of the memoryview object cannot be changed.
2774
2775   :class:`memoryview` has two methods:
2776
2777   .. method:: tobytes()
2778
2779      Return the data in the buffer as a bytestring (an object of class
2780      :class:`str`). ::
2781
2782         >>> m = memoryview("abc")
2783         >>> m.tobytes()
2784         'abc'
2785
2786   .. method:: tolist()
2787
2788      Return the data in the buffer as a list of integers. ::
2789
2790         >>> memoryview("abc").tolist()
2791         [97, 98, 99]
2792
2793   There are also several readonly attributes available:
2794
2795   .. attribute:: format
2796
2797      A string containing the format (in :mod:`struct` module style) for each
2798      element in the view.  This defaults to ``'B'``, a simple bytestring.
2799
2800   .. attribute:: itemsize
2801
2802      The size in bytes of each element of the memoryview.
2803
2804   .. attribute:: shape
2805
2806      A tuple of integers the length of :attr:`ndim` giving the shape of the
2807      memory as an N-dimensional array.
2808
2809   .. attribute:: ndim
2810
2811      An integer indicating how many dimensions of a multi-dimensional array the
2812      memory represents.
2813
2814   .. attribute:: strides
2815
2816      A tuple of integers the length of :attr:`ndim` giving the size in bytes to
2817      access each element for each dimension of the array.
2818
2819   .. attribute:: readonly
2820
2821      A bool indicating whether the memory is read only.
2822
2823   .. memoryview.suboffsets isn't documented because it only seems useful for C
2824
2825
2826.. _typecontextmanager:
2827
2828Context Manager Types
2829=====================
2830
2831.. versionadded:: 2.5
2832
2833.. index::
2834   single: context manager
2835   single: context management protocol
2836   single: protocol; context management
2837
2838Python's :keyword:`with` statement supports the concept of a runtime context
2839defined by a context manager.  This is implemented using two separate methods
2840that allow user-defined classes to define a runtime context that is entered
2841before the statement body is executed and exited when the statement ends.
2842
2843The :dfn:`context management protocol` consists of a pair of methods that need
2844to be provided for a context manager object to define a runtime context:
2845
2846
2847.. method:: contextmanager.__enter__()
2848
2849   Enter the runtime context and return either this object or another object
2850   related to the runtime context. The value returned by this method is bound to
2851   the identifier in the :keyword:`as` clause of :keyword:`with` statements using
2852   this context manager.
2853
2854   An example of a context manager that returns itself is a file object. File
2855   objects return themselves from __enter__() to allow :func:`open` to be used as
2856   the context expression in a :keyword:`with` statement.
2857
2858   An example of a context manager that returns a related object is the one
2859   returned by :func:`decimal.localcontext`. These managers set the active
2860   decimal context to a copy of the original decimal context and then return the
2861   copy. This allows changes to be made to the current decimal context in the body
2862   of the :keyword:`with` statement without affecting code outside the
2863   :keyword:`with` statement.
2864
2865
2866.. method:: contextmanager.__exit__(exc_type, exc_val, exc_tb)
2867
2868   Exit the runtime context and return a Boolean flag indicating if any exception
2869   that occurred should be suppressed. If an exception occurred while executing the
2870   body of the :keyword:`with` statement, the arguments contain the exception type,
2871   value and traceback information. Otherwise, all three arguments are ``None``.
2872
2873   Returning a true value from this method will cause the :keyword:`with` statement
2874   to suppress the exception and continue execution with the statement immediately
2875   following the :keyword:`with` statement. Otherwise the exception continues
2876   propagating after this method has finished executing. Exceptions that occur
2877   during execution of this method will replace any exception that occurred in the
2878   body of the :keyword:`with` statement.
2879
2880   The exception passed in should never be reraised explicitly - instead, this
2881   method should return a false value to indicate that the method completed
2882   successfully and does not want to suppress the raised exception. This allows
2883   context management code (such as ``contextlib.nested``) to easily detect whether
2884   or not an :meth:`__exit__` method has actually failed.
2885
2886Python defines several context managers to support easy thread synchronisation,
2887prompt closure of files or other objects, and simpler manipulation of the active
2888decimal arithmetic context. The specific types are not treated specially beyond
2889their implementation of the context management protocol. See the
2890:mod:`contextlib` module for some examples.
2891
2892Python's :term:`generator`\s and the ``contextlib.contextmanager`` :term:`decorator`
2893provide a convenient way to implement these protocols.  If a generator function is
2894decorated with the ``contextlib.contextmanager`` decorator, it will return a
2895context manager implementing the necessary :meth:`__enter__` and
2896:meth:`__exit__` methods, rather than the iterator produced by an undecorated
2897generator function.
2898
2899Note that there is no specific slot for any of these methods in the type
2900structure for Python objects in the Python/C API. Extension types wanting to
2901define these methods must provide them as a normal Python accessible method.
2902Compared to the overhead of setting up the runtime context, the overhead of a
2903single class dictionary lookup is negligible.
2904
2905
2906.. _typesother:
2907
2908Other Built-in Types
2909====================
2910
2911The interpreter supports several other kinds of objects. Most of these support
2912only one or two operations.
2913
2914
2915.. _typesmodules:
2916
2917Modules
2918-------
2919
2920The only special operation on a module is attribute access: ``m.name``, where
2921*m* is a module and *name* accesses a name defined in *m*'s symbol table.
2922Module attributes can be assigned to.  (Note that the :keyword:`import`
2923statement is not, strictly speaking, an operation on a module object; ``import
2924foo`` does not require a module object named *foo* to exist, rather it requires
2925an (external) *definition* for a module named *foo* somewhere.)
2926
2927A special attribute of every module is :attr:`~object.__dict__`. This is the
2928dictionary containing the module's symbol table. Modifying this dictionary will
2929actually change the module's symbol table, but direct assignment to the
2930:attr:`~object.__dict__` attribute is not possible (you can write
2931``m.__dict__['a'] = 1``, which defines ``m.a`` to be ``1``, but you can't write
2932``m.__dict__ = {}``).  Modifying :attr:`~object.__dict__` directly is
2933not recommended.
2934
2935Modules built into the interpreter are written like this: ``<module 'sys'
2936(built-in)>``.  If loaded from a file, they are written as ``<module 'os' from
2937'/usr/local/lib/pythonX.Y/os.pyc'>``.
2938
2939
2940.. _typesobjects:
2941
2942Classes and Class Instances
2943---------------------------
2944
2945See :ref:`objects` and :ref:`class` for these.
2946
2947
2948.. _typesfunctions:
2949
2950Functions
2951---------
2952
2953Function objects are created by function definitions.  The only operation on a
2954function object is to call it: ``func(argument-list)``.
2955
2956There are really two flavors of function objects: built-in functions and
2957user-defined functions.  Both support the same operation (to call the function),
2958but the implementation is different, hence the different object types.
2959
2960See :ref:`function` for more information.
2961
2962
2963.. _typesmethods:
2964
2965Methods
2966-------
2967
2968.. index:: object: method
2969
2970Methods are functions that are called using the attribute notation. There are
2971two flavors: built-in methods (such as :meth:`append` on lists) and class
2972instance methods.  Built-in methods are described with the types that support
2973them.
2974
2975The implementation adds two special read-only attributes to class instance
2976methods: ``m.im_self`` is the object on which the method operates, and
2977``m.im_func`` is the function implementing the method.  Calling ``m(arg-1,
2978arg-2, ..., arg-n)`` is completely equivalent to calling ``m.im_func(m.im_self,
2979arg-1, arg-2, ..., arg-n)``.
2980
2981Class instance methods are either *bound* or *unbound*, referring to whether the
2982method was accessed through an instance or a class, respectively.  When a method
2983is unbound, its ``im_self`` attribute will be ``None`` and if called, an
2984explicit ``self`` object must be passed as the first argument.  In this case,
2985``self`` must be an instance of the unbound method's class (or a subclass of
2986that class), otherwise a :exc:`TypeError` is raised.
2987
2988Like function objects, methods objects support getting arbitrary attributes.
2989However, since method attributes are actually stored on the underlying function
2990object (``meth.im_func``), setting method attributes on either bound or unbound
2991methods is disallowed.  Attempting to set an attribute on a method results in
2992an :exc:`AttributeError` being raised.  In order to set a method attribute, you
2993need to explicitly set it on the underlying function object::
2994
2995   >>> class C:
2996   ...     def method(self):
2997   ...         pass
2998   ...
2999   >>> c = C()
3000   >>> c.method.whoami = 'my name is method'  # can't set on the method
3001   Traceback (most recent call last):
3002     File "<stdin>", line 1, in <module>
3003   AttributeError: 'instancemethod' object has no attribute 'whoami'
3004   >>> c.method.im_func.whoami = 'my name is method'
3005   >>> c.method.whoami
3006   'my name is method'
3007
3008
3009See :ref:`types` for more information.
3010
3011
3012.. index:: object; code, code object
3013
3014.. _bltin-code-objects:
3015
3016Code Objects
3017------------
3018
3019.. index::
3020   builtin: compile
3021   single: func_code (function object attribute)
3022
3023Code objects are used by the implementation to represent "pseudo-compiled"
3024executable Python code such as a function body. They differ from function
3025objects because they don't contain a reference to their global execution
3026environment.  Code objects are returned by the built-in :func:`compile` function
3027and can be extracted from function objects through their :attr:`func_code`
3028attribute. See also the :mod:`code` module.
3029
3030.. index::
3031   statement: exec
3032   builtin: eval
3033
3034A code object can be executed or evaluated by passing it (instead of a source
3035string) to the :keyword:`exec` statement or the built-in :func:`eval` function.
3036
3037See :ref:`types` for more information.
3038
3039
3040.. _bltin-type-objects:
3041
3042Type Objects
3043------------
3044
3045.. index::
3046   builtin: type
3047   module: types
3048
3049Type objects represent the various object types.  An object's type is accessed
3050by the built-in function :func:`type`.  There are no special operations on
3051types.  The standard module :mod:`types` defines names for all standard built-in
3052types.
3053
3054Types are written like this: ``<type 'int'>``.
3055
3056
3057.. _bltin-null-object:
3058
3059The Null Object
3060---------------
3061
3062This object is returned by functions that don't explicitly return a value.  It
3063supports no special operations.  There is exactly one null object, named
3064``None`` (a built-in name).
3065
3066It is written as ``None``.
3067
3068
3069.. _bltin-ellipsis-object:
3070
3071The Ellipsis Object
3072-------------------
3073
3074This object is used by extended slice notation (see :ref:`slicings`).  It
3075supports no special operations.  There is exactly one ellipsis object, named
3076:const:`Ellipsis` (a built-in name).
3077
3078It is written as ``Ellipsis``.  When in a subscript, it can also be written as
3079``...``, for example ``seq[...]``.
3080
3081
3082The NotImplemented Object
3083-------------------------
3084
3085This object is returned from comparisons and binary operations when they are
3086asked to operate on types they don't support. See :ref:`comparisons` for more
3087information.
3088
3089It is written as ``NotImplemented``.
3090
3091
3092Boolean Values
3093--------------
3094
3095Boolean values are the two constant objects ``False`` and ``True``.  They are
3096used to represent truth values (although other values can also be considered
3097false or true).  In numeric contexts (for example when used as the argument to
3098an arithmetic operator), they behave like the integers 0 and 1, respectively.
3099The built-in function :func:`bool` can be used to convert any value to a
3100Boolean, if the value can be interpreted as a truth value (see section
3101:ref:`truth` above).
3102
3103.. index::
3104   single: False
3105   single: True
3106   pair: Boolean; values
3107
3108They are written as ``False`` and ``True``, respectively.
3109
3110
3111.. _typesinternal:
3112
3113Internal Objects
3114----------------
3115
3116See :ref:`types` for this information.  It describes stack frame objects,
3117traceback objects, and slice objects.
3118
3119
3120.. _specialattrs:
3121
3122Special Attributes
3123==================
3124
3125The implementation adds a few special read-only attributes to several object
3126types, where they are relevant.  Some of these are not reported by the
3127:func:`dir` built-in function.
3128
3129
3130.. attribute:: object.__dict__
3131
3132   A dictionary or other mapping object used to store an object's (writable)
3133   attributes.
3134
3135
3136.. attribute:: object.__methods__
3137
3138   .. deprecated:: 2.2
3139      Use the built-in function :func:`dir` to get a list of an object's attributes.
3140      This attribute is no longer available.
3141
3142
3143.. attribute:: object.__members__
3144
3145   .. deprecated:: 2.2
3146      Use the built-in function :func:`dir` to get a list of an object's attributes.
3147      This attribute is no longer available.
3148
3149
3150.. attribute:: instance.__class__
3151
3152   The class to which a class instance belongs.
3153
3154
3155.. attribute:: class.__bases__
3156
3157   The tuple of base classes of a class object.
3158
3159
3160.. attribute:: definition.__name__
3161
3162   The name of the class, type, function, method, descriptor, or
3163   generator instance.
3164
3165
3166The following attributes are only supported by :term:`new-style class`\ es.
3167
3168.. attribute:: class.__mro__
3169
3170   This attribute is a tuple of classes that are considered when looking for
3171   base classes during method resolution.
3172
3173
3174.. method:: class.mro()
3175
3176   This method can be overridden by a metaclass to customize the method
3177   resolution order for its instances.  It is called at class instantiation, and
3178   its result is stored in :attr:`~class.__mro__`.
3179
3180
3181.. method:: class.__subclasses__
3182
3183   Each new-style class keeps a list of weak references to its immediate
3184   subclasses.  This method returns a list of all those references still alive.
3185   Example::
3186
3187      >>> int.__subclasses__()
3188      [<type 'bool'>]
3189
3190
3191.. rubric:: Footnotes
3192
3193.. [1] Additional information on these special methods may be found in the Python
3194   Reference Manual (:ref:`customization`).
3195
3196.. [2] As a consequence, the list ``[1, 2]`` is considered equal to ``[1.0, 2.0]``, and
3197   similarly for tuples.
3198
3199.. [3] They must have since the parser can't tell the type of the operands.
3200
3201.. [4] Cased characters are those with general category property being one of
3202   "Lu" (Letter, uppercase), "Ll" (Letter, lowercase), or "Lt" (Letter, titlecase).
3203
3204.. [5] To format only a tuple you should therefore provide a singleton tuple whose only
3205   element is the tuple to be formatted.
3206
3207.. [6] The advantage of leaving the newline on is that returning an empty string is
3208   then an unambiguous EOF indication.  It is also possible (in cases where it
3209   might matter, for example, if you want to make an exact copy of a file while
3210   scanning its lines) to tell whether the last line of a file ended in a newline
3211   or not (yes this happens!).
3212