2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. _expressions:
|
|
|
|
|
|
|
|
***********
|
|
|
|
Expressions
|
|
|
|
***********
|
|
|
|
|
2007-08-31 06:22:56 -03:00
|
|
|
.. index:: expression, BNF
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2011-01-06 19:08:16 -04:00
|
|
|
This chapter explains the meaning of the elements of expressions in Python.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
**Syntax Notes:** In this and the following chapters, extended BNF notation will
|
|
|
|
be used to describe syntax, not lexical analysis. When (one alternative of) a
|
|
|
|
syntax rule has the form
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2024-01-17 12:39:50 -04:00
|
|
|
name: othername
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
and no semantics are given, the semantics of this form of ``name`` are the same
|
|
|
|
as for ``othername``.
|
|
|
|
|
|
|
|
|
|
|
|
.. _conversions:
|
|
|
|
|
|
|
|
Arithmetic conversions
|
|
|
|
======================
|
|
|
|
|
|
|
|
.. index:: pair: arithmetic; conversion
|
|
|
|
|
|
|
|
When a description of an arithmetic operator below uses the phrase "the numeric
|
2020-03-30 18:28:25 -03:00
|
|
|
arguments are converted to a common type", this means that the operator
|
2014-05-27 02:20:37 -03:00
|
|
|
implementation for built-in types works as follows:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
* If either argument is a complex number, the other is converted to complex;
|
|
|
|
|
|
|
|
* otherwise, if either argument is a floating point number, the other is
|
|
|
|
converted to floating point;
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
* otherwise, both must be integers and no conversion is necessary.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2014-05-27 02:20:37 -03:00
|
|
|
Some additional rules apply for certain operators (e.g., a string as a left
|
|
|
|
argument to the '%' operator). Extensions must define their own conversion
|
|
|
|
behavior.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. _atoms:
|
|
|
|
|
|
|
|
Atoms
|
|
|
|
=====
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
.. index:: atom
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Atoms are the most basic elements of expressions. The simplest atoms are
|
2007-09-07 11:15:41 -03:00
|
|
|
identifiers or literals. Forms enclosed in parentheses, brackets or braces are
|
|
|
|
also categorized syntactically as atoms. The syntax for atoms is:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-08-15 11:28:22 -03:00
|
|
|
atom: `identifier` | `literal` | `enclosure`
|
2007-09-07 11:15:41 -03:00
|
|
|
enclosure: `parenth_form` | `list_display` | `dict_display` | `set_display`
|
|
|
|
: | `generator_expression` | `yield_atom`
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. _atom-identifiers:
|
|
|
|
|
|
|
|
Identifiers (Names)
|
|
|
|
-------------------
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
.. index:: name, identifier
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
An identifier occurring as an atom is a name. See section :ref:`identifiers`
|
|
|
|
for lexical definition and section :ref:`naming` for documentation of naming and
|
|
|
|
binding.
|
|
|
|
|
2023-05-04 07:30:24 -03:00
|
|
|
.. index:: pair: exception; NameError
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
When the name is bound to an object, evaluation of the atom yields that object.
|
|
|
|
When a name is not bound, an attempt to evaluate it raises a :exc:`NameError`
|
|
|
|
exception.
|
|
|
|
|
2021-02-02 17:06:57 -04:00
|
|
|
.. _private-name-mangling:
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. index::
|
|
|
|
pair: name; mangling
|
|
|
|
pair: private; names
|
|
|
|
|
|
|
|
**Private name mangling:** When an identifier that textually occurs in a class
|
|
|
|
definition begins with two or more underscore characters and does not end in two
|
|
|
|
or more underscores, it is considered a :dfn:`private name` of that class.
|
|
|
|
Private names are transformed to a longer form before code is generated for
|
2013-04-14 05:13:42 -03:00
|
|
|
them. The transformation inserts the class name, with leading underscores
|
|
|
|
removed and a single underscore inserted, in front of the name. For example,
|
|
|
|
the identifier ``__spam`` occurring in a class named ``Ham`` will be transformed
|
|
|
|
to ``_Ham__spam``. This transformation is independent of the syntactical
|
|
|
|
context in which the identifier is used. If the transformed name is extremely
|
|
|
|
long (longer than 255 characters), implementation defined truncation may happen.
|
|
|
|
If the class name consists only of underscores, no transformation is done.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. _atom-literals:
|
|
|
|
|
|
|
|
Literals
|
|
|
|
--------
|
|
|
|
|
|
|
|
.. index:: single: literal
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
Python supports string and bytes literals and various numeric literals:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-09-07 11:15:41 -03:00
|
|
|
literal: `stringliteral` | `bytesliteral`
|
|
|
|
: | `integer` | `floatnumber` | `imagnumber`
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
Evaluation of a literal yields an object of the given type (string, bytes,
|
|
|
|
integer, floating point number, complex number) with the given value. The value
|
|
|
|
may be approximated in the case of floating point and imaginary (complex)
|
2007-08-15 11:28:22 -03:00
|
|
|
literals. See section :ref:`literals` for details.
|
|
|
|
|
|
|
|
.. index::
|
|
|
|
triple: immutable; data; type
|
|
|
|
pair: immutable; object
|
|
|
|
|
2012-02-17 20:56:58 -04:00
|
|
|
All literals correspond to immutable data types, and hence the object's identity
|
|
|
|
is less important than its value. Multiple evaluations of literals with the
|
|
|
|
same value (either the same occurrence in the program text or a different
|
|
|
|
occurrence) may obtain the same object or a different object with the same
|
|
|
|
value.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. _parenthesized:
|
|
|
|
|
|
|
|
Parenthesized forms
|
|
|
|
-------------------
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: parenthesized form
|
2018-10-28 08:41:26 -03:00
|
|
|
single: () (parentheses); tuple display
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
A parenthesized form is an optional expression list enclosed in parentheses:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2016-06-11 22:46:50 -03:00
|
|
|
parenth_form: "(" [`starred_expression`] ")"
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
A parenthesized expression list yields whatever that expression list yields: if
|
|
|
|
the list contains at least one comma, it yields a tuple; otherwise, it yields
|
|
|
|
the single expression that makes up the expression list.
|
|
|
|
|
|
|
|
.. index:: pair: empty; tuple
|
|
|
|
|
|
|
|
An empty pair of parentheses yields an empty tuple object. Since tuples are
|
2019-05-13 10:05:20 -03:00
|
|
|
immutable, the same rules as for literals apply (i.e., two occurrences of the empty
|
2007-08-15 11:28:22 -03:00
|
|
|
tuple may or may not yield the same object).
|
|
|
|
|
|
|
|
.. index::
|
2019-09-11 10:16:11 -03:00
|
|
|
single: comma
|
|
|
|
single: , (comma)
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Note that tuples are not formed by the parentheses, but rather by use of the
|
2022-10-27 03:33:42 -03:00
|
|
|
comma. The exception is the empty tuple, for which parentheses *are*
|
2007-08-15 11:28:22 -03:00
|
|
|
required --- allowing unparenthesized "nothing" in expressions would cause
|
|
|
|
ambiguities and allow common typos to pass uncaught.
|
|
|
|
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
.. _comprehensions:
|
|
|
|
|
|
|
|
Displays for lists, sets and dictionaries
|
|
|
|
-----------------------------------------
|
|
|
|
|
2020-10-20 18:27:07 -03:00
|
|
|
.. index:: single: comprehensions
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
For constructing a list, a set or a dictionary Python provides special syntax
|
|
|
|
called "displays", each of them in two flavors:
|
|
|
|
|
|
|
|
* either the container contents are listed explicitly, or
|
|
|
|
|
|
|
|
* they are computed via a set of looping and filtering instructions, called a
|
|
|
|
:dfn:`comprehension`.
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: for; in comprehensions
|
|
|
|
single: if; in comprehensions
|
|
|
|
single: async for; in comprehensions
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
Common syntax elements for comprehensions are:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2020-03-06 01:19:22 -04:00
|
|
|
comprehension: `assignment_expression` `comp_for`
|
2018-04-11 13:15:51 -03:00
|
|
|
comp_for: ["async"] "for" `target_list` "in" `or_test` [`comp_iter`]
|
2007-09-07 11:15:41 -03:00
|
|
|
comp_iter: `comp_for` | `comp_if`
|
2021-04-06 19:15:37 -03:00
|
|
|
comp_if: "if" `or_test` [`comp_iter`]
|
2007-09-07 11:15:41 -03:00
|
|
|
|
|
|
|
The comprehension consists of a single expression followed by at least one
|
2018-12-19 02:09:46 -04:00
|
|
|
:keyword:`!for` clause and zero or more :keyword:`!for` or :keyword:`!if` clauses.
|
2007-09-07 11:15:41 -03:00
|
|
|
In this case, the elements of the new container are those that would be produced
|
2018-12-19 02:09:46 -04:00
|
|
|
by considering each of the :keyword:`!for` or :keyword:`!if` clauses a block,
|
2007-09-07 11:15:41 -03:00
|
|
|
nesting from left to right, and evaluating the expression to produce an element
|
|
|
|
each time the innermost block is reached.
|
|
|
|
|
2018-12-19 02:09:46 -04:00
|
|
|
However, aside from the iterable expression in the leftmost :keyword:`!for` clause,
|
2017-12-01 00:54:17 -04:00
|
|
|
the comprehension is executed in a separate implicitly nested scope. This ensures
|
|
|
|
that names assigned to in the target list don't "leak" into the enclosing scope.
|
|
|
|
|
2018-12-19 02:09:46 -04:00
|
|
|
The iterable expression in the leftmost :keyword:`!for` clause is evaluated
|
2019-05-13 00:39:32 -03:00
|
|
|
directly in the enclosing scope and then passed as an argument to the implicitly
|
2018-12-19 02:09:46 -04:00
|
|
|
nested scope. Subsequent :keyword:`!for` clauses and any filter condition in the
|
|
|
|
leftmost :keyword:`!for` clause cannot be evaluated in the enclosing scope as
|
2017-12-01 00:54:17 -04:00
|
|
|
they may depend on the values obtained from the leftmost iterable. For example:
|
|
|
|
``[x*y for x in range(10) for y in range(x, x+10)]``.
|
|
|
|
|
|
|
|
To ensure the comprehension always results in a container of the appropriate
|
|
|
|
type, ``yield`` and ``yield from`` expressions are prohibited in the implicitly
|
2018-02-04 04:53:48 -04:00
|
|
|
nested scope.
|
2007-09-07 14:52:53 -03:00
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: await; in comprehensions
|
|
|
|
|
2018-12-19 02:09:46 -04:00
|
|
|
Since Python 3.6, in an :keyword:`async def` function, an :keyword:`!async for`
|
2016-12-15 18:36:05 -04:00
|
|
|
clause may be used to iterate over a :term:`asynchronous iterator`.
|
2018-12-19 02:09:46 -04:00
|
|
|
A comprehension in an :keyword:`!async def` function may consist of either a
|
|
|
|
:keyword:`!for` or :keyword:`!async for` clause following the leading
|
|
|
|
expression, may contain additional :keyword:`!for` or :keyword:`!async for`
|
2016-12-15 18:36:05 -04:00
|
|
|
clauses, and may also use :keyword:`await` expressions.
|
2021-07-13 18:27:50 -03:00
|
|
|
If a comprehension contains either :keyword:`!async for` clauses or
|
|
|
|
:keyword:`!await` expressions or other asynchronous comprehensions it is called
|
|
|
|
an :dfn:`asynchronous comprehension`. An asynchronous comprehension may
|
2016-12-15 18:36:05 -04:00
|
|
|
suspend the execution of the coroutine function in which it appears.
|
|
|
|
See also :pep:`530`.
|
2007-09-07 11:15:41 -03:00
|
|
|
|
2017-12-01 00:54:17 -04:00
|
|
|
.. versionadded:: 3.6
|
|
|
|
Asynchronous comprehensions were introduced.
|
|
|
|
|
2018-02-04 04:53:48 -04:00
|
|
|
.. versionchanged:: 3.8
|
|
|
|
``yield`` and ``yield from`` prohibited in the implicitly nested scope.
|
2017-12-01 00:54:17 -04:00
|
|
|
|
2021-07-13 18:27:50 -03:00
|
|
|
.. versionchanged:: 3.11
|
|
|
|
Asynchronous comprehensions are now allowed inside comprehensions in
|
|
|
|
asynchronous functions. Outer comprehensions implicitly become
|
|
|
|
asynchronous.
|
|
|
|
|
2017-12-01 00:54:17 -04:00
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. _lists:
|
|
|
|
|
|
|
|
List displays
|
|
|
|
-------------
|
|
|
|
|
|
|
|
.. index::
|
|
|
|
pair: list; display
|
|
|
|
pair: list; comprehensions
|
2007-09-07 11:15:41 -03:00
|
|
|
pair: empty; list
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; list
|
2018-10-28 08:41:26 -03:00
|
|
|
single: [] (square brackets); list expression
|
|
|
|
single: , (comma); expression list
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
A list display is a possibly empty series of expressions enclosed in square
|
|
|
|
brackets:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2016-06-11 22:46:50 -03:00
|
|
|
list_display: "[" [`starred_list` | `comprehension`] "]"
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
A list display yields a new list object, the contents being specified by either
|
|
|
|
a list of expressions or a comprehension. When a comma-separated list of
|
|
|
|
expressions is supplied, its elements are evaluated from left to right and
|
|
|
|
placed into the list object in that order. When a comprehension is supplied,
|
|
|
|
the list is constructed from the elements resulting from the comprehension.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
.. _set:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
Set displays
|
|
|
|
------------
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
pair: set; display
|
2020-10-20 18:27:07 -03:00
|
|
|
pair: set; comprehensions
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; set
|
2018-10-28 08:41:26 -03:00
|
|
|
single: {} (curly brackets); set expression
|
|
|
|
single: , (comma); expression list
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
A set display is denoted by curly braces and distinguishable from dictionary
|
|
|
|
displays by the lack of colons separating keys and values:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2016-06-11 22:46:50 -03:00
|
|
|
set_display: "{" (`starred_list` | `comprehension`) "}"
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
A set display yields a new mutable set object, the contents being specified by
|
|
|
|
either a sequence of expressions or a comprehension. When a comma-separated
|
|
|
|
list of expressions is supplied, its elements are evaluated from left to right
|
|
|
|
and added to the set object. When a comprehension is supplied, the set is
|
|
|
|
constructed from the elements resulting from the comprehension.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2008-09-21 04:09:51 -03:00
|
|
|
An empty set cannot be constructed with ``{}``; this literal constructs an empty
|
|
|
|
dictionary.
|
Merged revisions 61209-61214,61217-61222,61224-61226,61233-61237 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61209 | georg.brandl | 2008-03-03 21:37:55 +0100 (Mon, 03 Mar 2008) | 2 lines
There are now sixteen isfoo functions.
........
r61210 | georg.brandl | 2008-03-03 21:39:00 +0100 (Mon, 03 Mar 2008) | 2 lines
15 -> 16, the 2nd
........
r61211 | georg.brandl | 2008-03-03 22:22:47 +0100 (Mon, 03 Mar 2008) | 2 lines
Actually import itertools.
........
r61212 | georg.brandl | 2008-03-03 22:31:50 +0100 (Mon, 03 Mar 2008) | 2 lines
Expand a bit on genexp scopes.
........
r61213 | raymond.hettinger | 2008-03-03 23:04:55 +0100 (Mon, 03 Mar 2008) | 1 line
Remove dependency on itertools -- a simple genexp suffices.
........
r61214 | raymond.hettinger | 2008-03-03 23:19:58 +0100 (Mon, 03 Mar 2008) | 1 line
Issue 2226: Callable checked for the wrong abstract method.
........
r61217 | andrew.kuchling | 2008-03-04 01:40:32 +0100 (Tue, 04 Mar 2008) | 1 line
Typo fix
........
r61218 | andrew.kuchling | 2008-03-04 02:30:10 +0100 (Tue, 04 Mar 2008) | 1 line
Grammar fix; markup fix
........
r61219 | andrew.kuchling | 2008-03-04 02:47:38 +0100 (Tue, 04 Mar 2008) | 1 line
Fix sentence fragment
........
r61220 | andrew.kuchling | 2008-03-04 02:48:26 +0100 (Tue, 04 Mar 2008) | 1 line
Typo fix
........
r61221 | andrew.kuchling | 2008-03-04 02:49:37 +0100 (Tue, 04 Mar 2008) | 1 line
Add versionadded tags
........
r61222 | andrew.kuchling | 2008-03-04 02:50:32 +0100 (Tue, 04 Mar 2008) | 1 line
Thesis night results: add various items
........
r61224 | raymond.hettinger | 2008-03-04 05:17:08 +0100 (Tue, 04 Mar 2008) | 1 line
Beef-up docs and tests for itertools. Fix-up end-case for product().
........
r61225 | georg.brandl | 2008-03-04 08:25:54 +0100 (Tue, 04 Mar 2008) | 2 lines
Fix some patch attributions.
........
r61226 | georg.brandl | 2008-03-04 08:33:30 +0100 (Tue, 04 Mar 2008) | 2 lines
#2230: document that PyArg_* leaves addresses alone on error.
........
r61233 | neal.norwitz | 2008-03-04 17:22:46 +0100 (Tue, 04 Mar 2008) | 3 lines
Close the file before trying to remove the directory so it works on Windows.
As reported by Trent Nelson on python-dev.
........
r61234 | thomas.heller | 2008-03-04 21:09:11 +0100 (Tue, 04 Mar 2008) | 9 lines
Merged changes from libffi3-branch.
The bundled libffi copy is now in sync with the recently released
libffi3.0.4 version, apart from some small changes to
Modules/_ctypes/libffi/configure.ac.
I gave up on using libffi3 files on os x.
Instead, static configuration with files from pyobjc is used.
........
r61235 | thomas.heller | 2008-03-04 21:21:42 +0100 (Tue, 04 Mar 2008) | 1 line
Try to fix the build for PY_LINUX.
........
r61236 | fred.drake | 2008-03-04 22:14:04 +0100 (Tue, 04 Mar 2008) | 2 lines
fix typo
........
r61237 | raymond.hettinger | 2008-03-04 23:29:44 +0100 (Tue, 04 Mar 2008) | 1 line
Fix refleak in chain().
........
2008-03-04 19:39:23 -04:00
|
|
|
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. _dict:
|
|
|
|
|
|
|
|
Dictionary displays
|
|
|
|
-------------------
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
pair: dictionary; display
|
2020-10-20 18:27:07 -03:00
|
|
|
pair: dictionary; comprehensions
|
2023-07-03 00:22:40 -03:00
|
|
|
key, value, key/value pair
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; dictionary
|
2018-10-28 08:41:26 -03:00
|
|
|
single: {} (curly brackets); dictionary expression
|
|
|
|
single: : (colon); in dictionary expressions
|
|
|
|
single: , (comma); in dictionary displays
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2023-07-03 00:22:40 -03:00
|
|
|
A dictionary display is a possibly empty series of dict items (key/value pairs)
|
|
|
|
enclosed in curly braces:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2023-07-03 00:22:40 -03:00
|
|
|
dict_display: "{" [`dict_item_list` | `dict_comprehension`] "}"
|
|
|
|
dict_item_list: `dict_item` ("," `dict_item`)* [","]
|
|
|
|
dict_item: `expression` ":" `expression` | "**" `or_expr`
|
2007-09-07 11:15:41 -03:00
|
|
|
dict_comprehension: `expression` ":" `expression` `comp_for`
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
A dictionary display yields a new dictionary object.
|
|
|
|
|
2023-07-03 00:22:40 -03:00
|
|
|
If a comma-separated sequence of dict items is given, they are evaluated
|
2007-09-07 11:15:41 -03:00
|
|
|
from left to right to define the entries of the dictionary: each key object is
|
2023-07-03 00:22:40 -03:00
|
|
|
used as a key into the dictionary to store the corresponding value. This means
|
|
|
|
that you can specify the same key multiple times in the dict item list, and the
|
2007-09-07 11:15:41 -03:00
|
|
|
final dictionary's value for that key will be the last one given.
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
unpacking; dictionary
|
|
|
|
single: **; in dictionary displays
|
2016-06-11 22:46:50 -03:00
|
|
|
|
|
|
|
A double asterisk ``**`` denotes :dfn:`dictionary unpacking`.
|
|
|
|
Its operand must be a :term:`mapping`. Each mapping item is added
|
|
|
|
to the new dictionary. Later values replace values already set by
|
2023-07-03 00:22:40 -03:00
|
|
|
earlier dict items and earlier dictionary unpackings.
|
2016-06-11 22:46:50 -03:00
|
|
|
|
|
|
|
.. versionadded:: 3.5
|
|
|
|
Unpacking into dictionary displays, originally proposed by :pep:`448`.
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
A dict comprehension, in contrast to list and set comprehensions, needs two
|
|
|
|
expressions separated with a colon followed by the usual "for" and "if" clauses.
|
|
|
|
When the comprehension is run, the resulting key and value elements are inserted
|
|
|
|
in the new dictionary in the order they are produced.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index:: pair: immutable; object
|
2007-09-07 11:15:41 -03:00
|
|
|
hashable
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Restrictions on the types of the key values are listed earlier in section
|
Merged revisions 58742-58816 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r58745 | georg.brandl | 2007-11-01 10:19:33 -0700 (Thu, 01 Nov 2007) | 2 lines
#1364: os.lstat is available on Windows too, as an alias to os.stat.
........
r58750 | christian.heimes | 2007-11-01 12:48:10 -0700 (Thu, 01 Nov 2007) | 1 line
Backport of import tests for bug http://bugs.python.org/issue1293 and bug http://bugs.python.org/issue1342
........
r58751 | christian.heimes | 2007-11-01 13:11:06 -0700 (Thu, 01 Nov 2007) | 1 line
Removed non ASCII text from test as requested by Guido. Sorry :/
........
r58753 | georg.brandl | 2007-11-01 13:37:02 -0700 (Thu, 01 Nov 2007) | 2 lines
Fix markup glitch.
........
r58757 | gregory.p.smith | 2007-11-01 14:08:14 -0700 (Thu, 01 Nov 2007) | 4 lines
Fix bug introduced in revision 58385. Database keys could no longer
have NULL bytes in them. Replace the errant strdup with a
malloc+memcpy. Adds a unit test for the correct behavior.
........
r58758 | gregory.p.smith | 2007-11-01 14:15:36 -0700 (Thu, 01 Nov 2007) | 3 lines
Undo revision 58533 58534 fixes. Those were a workaround for
a problem introduced by 58385.
........
r58759 | gregory.p.smith | 2007-11-01 14:17:47 -0700 (Thu, 01 Nov 2007) | 2 lines
false "fix" undone as correct problem was found and fixed.
........
r58765 | mark.summerfield | 2007-11-02 01:24:59 -0700 (Fri, 02 Nov 2007) | 3 lines
Added more file-handling related cross-references.
........
r58766 | nick.coghlan | 2007-11-02 03:09:12 -0700 (Fri, 02 Nov 2007) | 1 line
Fix for bug 1705170 - contextmanager swallowing StopIteration (2.5 backport candidate)
........
r58784 | thomas.heller | 2007-11-02 12:10:24 -0700 (Fri, 02 Nov 2007) | 4 lines
Issue #1292: On alpha, arm, ppc, and s390 linux systems the
--with-system-ffi configure option defaults to "yes" because the
bundled libffi sources are too old.
........
r58785 | thomas.heller | 2007-11-02 12:11:23 -0700 (Fri, 02 Nov 2007) | 1 line
Enable the full ctypes c_longdouble tests again.
........
r58796 | georg.brandl | 2007-11-02 13:06:17 -0700 (Fri, 02 Nov 2007) | 4 lines
Make "hashable" a glossary entry and clarify docs on __cmp__, __eq__ and __hash__.
I hope the concept of hashability is better understandable now.
Thanks to Tim Hatch for pointing out the flaws here.
........
2007-11-02 20:46:40 -03:00
|
|
|
:ref:`types`. (To summarize, the key type should be :term:`hashable`, which excludes
|
2007-08-15 11:28:22 -03:00
|
|
|
all mutable objects.) Clashes between duplicate keys are not detected; the last
|
2023-07-03 00:22:40 -03:00
|
|
|
value (textually rightmost in the display) stored for a given key value
|
2007-08-15 11:28:22 -03:00
|
|
|
prevails.
|
|
|
|
|
2019-06-22 11:40:55 -03:00
|
|
|
.. versionchanged:: 3.8
|
|
|
|
Prior to Python 3.8, in dict comprehensions, the evaluation order of key
|
|
|
|
and value was not well-defined. In CPython, the value was evaluated before
|
|
|
|
the key. Starting with 3.8, the key is evaluated before the value, as
|
|
|
|
proposed by :pep:`572`.
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
.. _genexpr:
|
|
|
|
|
|
|
|
Generator expressions
|
|
|
|
---------------------
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
pair: generator; expression
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; generator
|
2018-10-28 08:41:26 -03:00
|
|
|
single: () (parentheses); generator expression
|
2007-09-07 11:15:41 -03:00
|
|
|
|
|
|
|
A generator expression is a compact generator notation in parentheses:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-09-07 11:15:41 -03:00
|
|
|
generator_expression: "(" `expression` `comp_for` ")"
|
|
|
|
|
|
|
|
A generator expression yields a new generator object. Its syntax is the same as
|
|
|
|
for comprehensions, except that it is enclosed in parentheses instead of
|
|
|
|
brackets or curly braces.
|
|
|
|
|
|
|
|
Variables used in the generator expression are evaluated lazily when the
|
2014-05-27 02:20:37 -03:00
|
|
|
:meth:`~generator.__next__` method is called for the generator object (in the same
|
2017-12-01 00:54:17 -04:00
|
|
|
fashion as normal generators). However, the iterable expression in the
|
2018-12-19 02:09:46 -04:00
|
|
|
leftmost :keyword:`!for` clause is immediately evaluated, so that an error
|
2017-12-01 00:54:17 -04:00
|
|
|
produced by it will be emitted at the point where the generator expression
|
|
|
|
is defined, rather than at the point where the first value is retrieved.
|
2018-12-19 02:09:46 -04:00
|
|
|
Subsequent :keyword:`!for` clauses and any filter condition in the leftmost
|
|
|
|
:keyword:`!for` clause cannot be evaluated in the enclosing scope as they may
|
2017-12-01 00:54:17 -04:00
|
|
|
depend on the values obtained from the leftmost iterable. For example:
|
|
|
|
``(x*y for x in range(10) for y in range(x, x+10))``.
|
2007-09-07 11:15:41 -03:00
|
|
|
|
|
|
|
The parentheses can be omitted on calls with only one argument. See section
|
2014-05-27 02:20:37 -03:00
|
|
|
:ref:`calls` for details.
|
2007-09-07 11:15:41 -03:00
|
|
|
|
2017-12-01 00:54:17 -04:00
|
|
|
To avoid interfering with the expected operation of the generator expression
|
|
|
|
itself, ``yield`` and ``yield from`` expressions are prohibited in the
|
2018-02-04 04:53:48 -04:00
|
|
|
implicitly defined generator.
|
2017-12-01 00:54:17 -04:00
|
|
|
|
2018-12-19 02:09:46 -04:00
|
|
|
If a generator expression contains either :keyword:`!async for`
|
2017-10-06 03:58:28 -03:00
|
|
|
clauses or :keyword:`await` expressions it is called an
|
|
|
|
:dfn:`asynchronous generator expression`. An asynchronous generator
|
|
|
|
expression returns a new asynchronous generator object,
|
|
|
|
which is an asynchronous iterator (see :ref:`async-iterators`).
|
|
|
|
|
2017-12-01 00:54:17 -04:00
|
|
|
.. versionadded:: 3.6
|
|
|
|
Asynchronous generator expressions were introduced.
|
|
|
|
|
2017-10-06 03:58:28 -03:00
|
|
|
.. versionchanged:: 3.7
|
|
|
|
Prior to Python 3.7, asynchronous generator expressions could
|
|
|
|
only appear in :keyword:`async def` coroutines. Starting
|
|
|
|
with 3.7, any function can use asynchronous generator expressions.
|
2007-09-07 11:15:41 -03:00
|
|
|
|
2018-02-04 04:53:48 -04:00
|
|
|
.. versionchanged:: 3.8
|
|
|
|
``yield`` and ``yield from`` prohibited in the implicitly nested scope.
|
2017-12-01 00:54:17 -04:00
|
|
|
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. _yieldexpr:
|
|
|
|
|
|
|
|
Yield expressions
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
.. index::
|
2023-05-04 05:44:12 -03:00
|
|
|
pair: keyword; yield
|
|
|
|
pair: keyword; from
|
2007-08-15 11:28:22 -03:00
|
|
|
pair: yield; expression
|
|
|
|
pair: generator; function
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-08-15 11:28:22 -03:00
|
|
|
yield_atom: "(" `yield_expression` ")"
|
2024-01-17 12:39:50 -04:00
|
|
|
yield_from: "yield" "from" `expression`
|
|
|
|
yield_expression: "yield" `expression_list` | `yield_from`
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2016-12-15 18:36:05 -04:00
|
|
|
The yield expression is used when defining a :term:`generator` function
|
|
|
|
or an :term:`asynchronous generator` function and
|
2014-01-26 23:52:08 -04:00
|
|
|
thus can only be used in the body of a function definition. Using a yield
|
2022-01-07 14:39:40 -04:00
|
|
|
expression in a function's body causes that function to be a generator function,
|
2016-12-15 18:36:05 -04:00
|
|
|
and using it in an :keyword:`async def` function's body causes that
|
2022-01-07 14:39:40 -04:00
|
|
|
coroutine function to be an asynchronous generator function. For example::
|
2016-12-15 18:36:05 -04:00
|
|
|
|
|
|
|
def gen(): # defines a generator function
|
|
|
|
yield 123
|
|
|
|
|
2018-11-07 14:12:12 -04:00
|
|
|
async def agen(): # defines an asynchronous generator function
|
2016-12-15 18:36:05 -04:00
|
|
|
yield 123
|
|
|
|
|
2017-12-01 00:54:17 -04:00
|
|
|
Due to their side effects on the containing scope, ``yield`` expressions
|
|
|
|
are not permitted as part of the implicitly defined scopes used to
|
2018-02-04 04:53:48 -04:00
|
|
|
implement comprehensions and generator expressions.
|
2017-12-01 00:54:17 -04:00
|
|
|
|
2018-02-04 04:53:48 -04:00
|
|
|
.. versionchanged:: 3.8
|
|
|
|
Yield expressions prohibited in the implicitly nested scopes used to
|
2017-12-01 00:54:17 -04:00
|
|
|
implement comprehensions and generator expressions.
|
|
|
|
|
2016-12-15 18:36:05 -04:00
|
|
|
Generator functions are described below, while asynchronous generator
|
|
|
|
functions are described separately in section
|
|
|
|
:ref:`asynchronous-generator-functions`.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
When a generator function is called, it returns an iterator known as a
|
2021-11-18 12:06:38 -04:00
|
|
|
generator. That generator then controls the execution of the generator
|
|
|
|
function. The execution starts when one of the generator's methods is called.
|
|
|
|
At that time, the execution proceeds to the first yield expression, where it is
|
|
|
|
suspended again, returning the value of :token:`~python-grammar:expression_list`
|
2023-01-01 11:36:13 -04:00
|
|
|
to the generator's caller,
|
2023-01-02 07:49:06 -04:00
|
|
|
or ``None`` if :token:`~python-grammar:expression_list` is omitted.
|
2023-01-01 11:36:13 -04:00
|
|
|
By suspended, we mean that all local state is
|
2021-11-18 12:06:38 -04:00
|
|
|
retained, including the current bindings of local variables, the instruction
|
|
|
|
pointer, the internal evaluation stack, and the state of any exception handling.
|
|
|
|
When the execution is resumed by calling one of the generator's methods, the
|
|
|
|
function can proceed exactly as if the yield expression were just another
|
|
|
|
external call. The value of the yield expression after resuming depends on the
|
|
|
|
method which resumed the execution. If :meth:`~generator.__next__` is used
|
|
|
|
(typically via either a :keyword:`for` or the :func:`next` builtin) then the
|
|
|
|
result is :const:`None`. Otherwise, if :meth:`~generator.send` is used, then
|
|
|
|
the result will be the value passed in to that method.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index:: single: coroutine
|
|
|
|
|
|
|
|
All of this makes generator functions quite similar to coroutines; they yield
|
|
|
|
multiple times, they have more than one entry point and their execution can be
|
|
|
|
suspended. The only difference is that a generator function cannot control
|
2014-05-27 02:20:37 -03:00
|
|
|
where the execution should continue after it yields; the control is always
|
2010-09-21 11:48:28 -03:00
|
|
|
transferred to the generator's caller.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2015-01-15 02:25:27 -04:00
|
|
|
Yield expressions are allowed anywhere in a :keyword:`try` construct. If the
|
|
|
|
generator is not resumed before it is
|
2014-01-26 23:52:08 -04:00
|
|
|
finalized (by reaching a zero reference count or by being garbage collected),
|
|
|
|
the generator-iterator's :meth:`~generator.close` method will be called,
|
|
|
|
allowing any pending :keyword:`finally` clauses to execute.
|
2007-09-07 14:52:53 -03:00
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: from; yield from expression
|
|
|
|
|
2021-02-20 22:33:25 -04:00
|
|
|
When ``yield from <expr>`` is used, the supplied expression must be an
|
|
|
|
iterable. The values produced by iterating that iterable are passed directly
|
2012-01-13 07:43:40 -04:00
|
|
|
to the caller of the current generator's methods. Any values passed in with
|
2013-10-09 08:02:31 -03:00
|
|
|
:meth:`~generator.send` and any exceptions passed in with
|
|
|
|
:meth:`~generator.throw` are passed to the underlying iterator if it has the
|
|
|
|
appropriate methods. If this is not the case, then :meth:`~generator.send`
|
|
|
|
will raise :exc:`AttributeError` or :exc:`TypeError`, while
|
|
|
|
:meth:`~generator.throw` will just raise the passed in exception immediately.
|
2012-01-13 07:43:40 -04:00
|
|
|
|
|
|
|
When the underlying iterator is complete, the :attr:`~StopIteration.value`
|
|
|
|
attribute of the raised :exc:`StopIteration` instance becomes the value of
|
|
|
|
the yield expression. It can be either set explicitly when raising
|
2019-05-13 10:05:20 -03:00
|
|
|
:exc:`StopIteration`, or automatically when the subiterator is a generator
|
|
|
|
(by returning a value from the subgenerator).
|
2012-01-13 07:43:40 -04:00
|
|
|
|
2023-10-11 17:50:55 -03:00
|
|
|
.. versionchanged:: 3.3
|
|
|
|
Added ``yield from <expr>`` to delegate control flow to a subiterator.
|
2012-01-14 00:43:24 -04:00
|
|
|
|
2014-01-26 23:52:08 -04:00
|
|
|
The parentheses may be omitted when the yield expression is the sole expression
|
|
|
|
on the right hand side of an assignment statement.
|
2012-01-13 07:43:40 -04:00
|
|
|
|
2014-01-26 23:52:08 -04:00
|
|
|
.. seealso::
|
|
|
|
|
2016-03-31 09:30:54 -03:00
|
|
|
:pep:`255` - Simple Generators
|
2014-01-26 23:52:08 -04:00
|
|
|
The proposal for adding generators and the :keyword:`yield` statement to Python.
|
|
|
|
|
2016-03-31 09:30:54 -03:00
|
|
|
:pep:`342` - Coroutines via Enhanced Generators
|
2014-01-26 23:52:08 -04:00
|
|
|
The proposal to enhance the API and syntax of generators, making them
|
|
|
|
usable as simple coroutines.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2016-03-31 09:30:54 -03:00
|
|
|
:pep:`380` - Syntax for Delegating to a Subgenerator
|
2021-11-18 12:06:38 -04:00
|
|
|
The proposal to introduce the :token:`~python-grammar:yield_from` syntax,
|
|
|
|
making delegation to subgenerators easy.
|
2014-01-26 23:52:08 -04:00
|
|
|
|
2018-11-07 14:12:12 -04:00
|
|
|
:pep:`525` - Asynchronous Generators
|
|
|
|
The proposal that expanded on :pep:`492` by adding generator capabilities to
|
|
|
|
coroutine functions.
|
|
|
|
|
2023-05-04 07:04:41 -03:00
|
|
|
.. index:: pair: object; generator
|
2015-06-24 12:04:15 -03:00
|
|
|
.. _generator-methods:
|
2012-08-17 21:48:59 -03:00
|
|
|
|
|
|
|
Generator-iterator methods
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
This subsection describes the methods of a generator iterator. They can
|
|
|
|
be used to control the execution of a generator function.
|
|
|
|
|
|
|
|
Note that calling any of the generator methods below when the generator
|
|
|
|
is already executing raises a :exc:`ValueError` exception.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2023-05-04 07:30:24 -03:00
|
|
|
.. index:: pair: exception; StopIteration
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
.. method:: generator.__next__()
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
Starts the execution of a generator function or resumes it at the last
|
2014-01-26 23:52:08 -04:00
|
|
|
executed yield expression. When a generator function is resumed with a
|
|
|
|
:meth:`~generator.__next__` method, the current yield expression always
|
|
|
|
evaluates to :const:`None`. The execution then continues to the next yield
|
|
|
|
expression, where the generator is suspended again, and the value of the
|
2021-11-18 12:06:38 -04:00
|
|
|
:token:`~python-grammar:expression_list` is returned to :meth:`__next__`'s
|
|
|
|
caller. If the generator exits without yielding another value, a
|
|
|
|
:exc:`StopIteration` exception is raised.
|
2007-09-07 11:15:41 -03:00
|
|
|
|
|
|
|
This method is normally called implicitly, e.g. by a :keyword:`for` loop, or
|
|
|
|
by the built-in :func:`next` function.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. method:: generator.send(value)
|
|
|
|
|
|
|
|
Resumes the execution and "sends" a value into the generator function. The
|
2014-01-26 23:52:08 -04:00
|
|
|
*value* argument becomes the result of the current yield expression. The
|
|
|
|
:meth:`send` method returns the next value yielded by the generator, or
|
|
|
|
raises :exc:`StopIteration` if the generator exits without yielding another
|
|
|
|
value. When :meth:`send` is called to start the generator, it must be called
|
|
|
|
with :const:`None` as the argument, because there is no yield expression that
|
|
|
|
could receive the value.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
2022-03-31 10:56:48 -03:00
|
|
|
.. method:: generator.throw(value)
|
|
|
|
generator.throw(type[, value[, traceback]])
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2022-03-31 10:56:48 -03:00
|
|
|
Raises an exception at the point where the generator was paused,
|
2007-08-15 11:28:22 -03:00
|
|
|
and returns the next value yielded by the generator function. If the generator
|
|
|
|
exits without yielding another value, a :exc:`StopIteration` exception is
|
|
|
|
raised. If the generator function does not catch the passed-in exception, or
|
|
|
|
raises a different exception, then that exception propagates to the caller.
|
|
|
|
|
2022-03-31 10:56:48 -03:00
|
|
|
In typical use, this is called with a single exception instance similar to the
|
|
|
|
way the :keyword:`raise` keyword is used.
|
|
|
|
|
2022-06-21 16:10:45 -03:00
|
|
|
For backwards compatibility, however, the second signature is
|
2022-03-31 10:56:48 -03:00
|
|
|
supported, following a convention from older versions of Python.
|
|
|
|
The *type* argument should be an exception class, and *value*
|
|
|
|
should be an exception instance. If the *value* is not provided, the
|
|
|
|
*type* constructor is called to get an instance. If *traceback*
|
|
|
|
is provided, it is set on the exception, otherwise any existing
|
|
|
|
:attr:`~BaseException.__traceback__` attribute stored in *value* may
|
|
|
|
be cleared.
|
|
|
|
|
2022-09-30 05:43:02 -03:00
|
|
|
.. versionchanged:: 3.12
|
|
|
|
|
|
|
|
The second signature \(type\[, value\[, traceback\]\]\) is deprecated and
|
|
|
|
may be removed in a future version of Python.
|
|
|
|
|
2023-05-04 07:30:24 -03:00
|
|
|
.. index:: pair: exception; GeneratorExit
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. method:: generator.close()
|
|
|
|
|
|
|
|
Raises a :exc:`GeneratorExit` at the point where the generator function was
|
2023-05-23 17:51:56 -03:00
|
|
|
paused. If the generator function catches the exception and returns a
|
|
|
|
value, this value is returned from :meth:`close`. If the generator function
|
|
|
|
is already closed, or raises :exc:`GeneratorExit` (by not catching the
|
|
|
|
exception), :meth:`close` returns :const:`None`. If the generator yields a
|
|
|
|
value, a :exc:`RuntimeError` is raised. If the generator raises any other
|
|
|
|
exception, it is propagated to the caller. If the generator has already
|
|
|
|
exited due to an exception or normal exit, :meth:`close` returns
|
|
|
|
:const:`None` and has no other effect.
|
|
|
|
|
|
|
|
.. versionchanged:: 3.13
|
|
|
|
|
|
|
|
If a generator returns a value upon being closed, the value is returned
|
|
|
|
by :meth:`close`.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2012-12-23 19:31:57 -04:00
|
|
|
.. index:: single: yield; examples
|
|
|
|
|
|
|
|
Examples
|
|
|
|
^^^^^^^^
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
Here is a simple example that demonstrates the behavior of generators and
|
|
|
|
generator functions::
|
|
|
|
|
|
|
|
>>> def echo(value=None):
|
2007-09-04 04:15:32 -03:00
|
|
|
... print("Execution starts when 'next()' is called for the first time.")
|
2007-08-15 11:28:22 -03:00
|
|
|
... try:
|
|
|
|
... while True:
|
|
|
|
... try:
|
|
|
|
... value = (yield value)
|
2009-08-03 14:50:20 -03:00
|
|
|
... except Exception as e:
|
2007-08-15 11:28:22 -03:00
|
|
|
... value = e
|
|
|
|
... finally:
|
2007-09-04 04:15:32 -03:00
|
|
|
... print("Don't forget to clean up when 'close()' is called.")
|
2007-08-15 11:28:22 -03:00
|
|
|
...
|
|
|
|
>>> generator = echo(1)
|
2007-09-07 11:15:41 -03:00
|
|
|
>>> print(next(generator))
|
2007-08-15 11:28:22 -03:00
|
|
|
Execution starts when 'next()' is called for the first time.
|
|
|
|
1
|
2007-09-07 11:15:41 -03:00
|
|
|
>>> print(next(generator))
|
2007-08-15 11:28:22 -03:00
|
|
|
None
|
2007-09-04 04:15:32 -03:00
|
|
|
>>> print(generator.send(2))
|
2007-08-15 11:28:22 -03:00
|
|
|
2
|
|
|
|
>>> generator.throw(TypeError, "spam")
|
|
|
|
TypeError('spam',)
|
|
|
|
>>> generator.close()
|
|
|
|
Don't forget to clean up when 'close()' is called.
|
|
|
|
|
2012-12-23 19:31:57 -04:00
|
|
|
For examples using ``yield from``, see :ref:`pep-380` in "What's New in
|
|
|
|
Python."
|
|
|
|
|
2016-12-15 18:36:05 -04:00
|
|
|
.. _asynchronous-generator-functions:
|
|
|
|
|
|
|
|
Asynchronous generator functions
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
The presence of a yield expression in a function or method defined using
|
2019-05-13 10:05:20 -03:00
|
|
|
:keyword:`async def` further defines the function as an
|
2016-12-15 18:36:05 -04:00
|
|
|
:term:`asynchronous generator` function.
|
|
|
|
|
|
|
|
When an asynchronous generator function is called, it returns an
|
|
|
|
asynchronous iterator known as an asynchronous generator object.
|
|
|
|
That object then controls the execution of the generator function.
|
|
|
|
An asynchronous generator object is typically used in an
|
|
|
|
:keyword:`async for` statement in a coroutine function analogously to
|
|
|
|
how a generator object would be used in a :keyword:`for` statement.
|
|
|
|
|
2021-11-18 12:06:38 -04:00
|
|
|
Calling one of the asynchronous generator's methods returns an :term:`awaitable`
|
|
|
|
object, and the execution starts when this object is awaited on. At that time,
|
|
|
|
the execution proceeds to the first yield expression, where it is suspended
|
|
|
|
again, returning the value of :token:`~python-grammar:expression_list` to the
|
|
|
|
awaiting coroutine. As with a generator, suspension means that all local state
|
|
|
|
is retained, including the current bindings of local variables, the instruction
|
|
|
|
pointer, the internal evaluation stack, and the state of any exception handling.
|
|
|
|
When the execution is resumed by awaiting on the next object returned by the
|
|
|
|
asynchronous generator's methods, the function can proceed exactly as if the
|
|
|
|
yield expression were just another external call. The value of the yield
|
|
|
|
expression after resuming depends on the method which resumed the execution. If
|
2016-12-15 18:36:05 -04:00
|
|
|
:meth:`~agen.__anext__` is used then the result is :const:`None`. Otherwise, if
|
2021-11-18 12:06:38 -04:00
|
|
|
:meth:`~agen.asend` is used, then the result will be the value passed in to that
|
|
|
|
method.
|
2016-12-15 18:36:05 -04:00
|
|
|
|
2020-11-02 04:02:48 -04:00
|
|
|
If an asynchronous generator happens to exit early by :keyword:`break`, the caller
|
|
|
|
task being cancelled, or other exceptions, the generator's async cleanup code
|
|
|
|
will run and possibly raise exceptions or access context variables in an
|
|
|
|
unexpected context--perhaps after the lifetime of tasks it depends, or
|
|
|
|
during the event loop shutdown when the async-generator garbage collection hook
|
|
|
|
is called.
|
|
|
|
To prevent this, the caller must explicitly close the async generator by calling
|
|
|
|
:meth:`~agen.aclose` method to finalize the generator and ultimately detach it
|
|
|
|
from the event loop.
|
|
|
|
|
2016-12-15 18:36:05 -04:00
|
|
|
In an asynchronous generator function, yield expressions are allowed anywhere
|
|
|
|
in a :keyword:`try` construct. However, if an asynchronous generator is not
|
|
|
|
resumed before it is finalized (by reaching a zero reference count or by
|
2018-12-19 02:09:46 -04:00
|
|
|
being garbage collected), then a yield expression within a :keyword:`!try`
|
2016-12-15 18:36:05 -04:00
|
|
|
construct could result in a failure to execute pending :keyword:`finally`
|
|
|
|
clauses. In this case, it is the responsibility of the event loop or
|
|
|
|
scheduler running the asynchronous generator to call the asynchronous
|
|
|
|
generator-iterator's :meth:`~agen.aclose` method and run the resulting
|
2018-12-19 02:09:46 -04:00
|
|
|
coroutine object, thus allowing any pending :keyword:`!finally` clauses
|
2016-12-15 18:36:05 -04:00
|
|
|
to execute.
|
|
|
|
|
2020-11-02 04:02:48 -04:00
|
|
|
To take care of finalization upon event loop termination, an event loop should
|
|
|
|
define a *finalizer* function which takes an asynchronous generator-iterator and
|
|
|
|
presumably calls :meth:`~agen.aclose` and executes the coroutine.
|
2016-12-15 18:36:05 -04:00
|
|
|
This *finalizer* may be registered by calling :func:`sys.set_asyncgen_hooks`.
|
|
|
|
When first iterated over, an asynchronous generator-iterator will store the
|
|
|
|
registered *finalizer* to be called upon finalization. For a reference example
|
|
|
|
of a *finalizer* method see the implementation of
|
|
|
|
``asyncio.Loop.shutdown_asyncgens`` in :source:`Lib/asyncio/base_events.py`.
|
|
|
|
|
|
|
|
The expression ``yield from <expr>`` is a syntax error when used in an
|
|
|
|
asynchronous generator function.
|
|
|
|
|
2023-05-04 07:04:41 -03:00
|
|
|
.. index:: pair: object; asynchronous-generator
|
2016-12-15 18:36:05 -04:00
|
|
|
.. _asynchronous-generator-methods:
|
|
|
|
|
|
|
|
Asynchronous generator-iterator methods
|
|
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
|
|
|
This subsection describes the methods of an asynchronous generator iterator,
|
|
|
|
which are used to control the execution of a generator function.
|
|
|
|
|
|
|
|
|
2023-05-04 07:30:24 -03:00
|
|
|
.. index:: pair: exception; StopAsyncIteration
|
2016-12-15 18:36:05 -04:00
|
|
|
|
|
|
|
.. coroutinemethod:: agen.__anext__()
|
|
|
|
|
|
|
|
Returns an awaitable which when run starts to execute the asynchronous
|
|
|
|
generator or resumes it at the last executed yield expression. When an
|
2019-05-13 10:05:20 -03:00
|
|
|
asynchronous generator function is resumed with an :meth:`~agen.__anext__`
|
2021-11-18 12:06:38 -04:00
|
|
|
method, the current yield expression always evaluates to :const:`None` in the
|
|
|
|
returned awaitable, which when run will continue to the next yield
|
|
|
|
expression. The value of the :token:`~python-grammar:expression_list` of the
|
|
|
|
yield expression is the value of the :exc:`StopIteration` exception raised by
|
2016-12-15 18:36:05 -04:00
|
|
|
the completing coroutine. If the asynchronous generator exits without
|
2019-05-13 10:05:20 -03:00
|
|
|
yielding another value, the awaitable instead raises a
|
2016-12-15 18:36:05 -04:00
|
|
|
:exc:`StopAsyncIteration` exception, signalling that the asynchronous
|
|
|
|
iteration has completed.
|
|
|
|
|
|
|
|
This method is normally called implicitly by a :keyword:`async for` loop.
|
|
|
|
|
|
|
|
|
|
|
|
.. coroutinemethod:: agen.asend(value)
|
|
|
|
|
|
|
|
Returns an awaitable which when run resumes the execution of the
|
|
|
|
asynchronous generator. As with the :meth:`~generator.send()` method for a
|
|
|
|
generator, this "sends" a value into the asynchronous generator function,
|
|
|
|
and the *value* argument becomes the result of the current yield expression.
|
|
|
|
The awaitable returned by the :meth:`asend` method will return the next
|
|
|
|
value yielded by the generator as the value of the raised
|
|
|
|
:exc:`StopIteration`, or raises :exc:`StopAsyncIteration` if the
|
|
|
|
asynchronous generator exits without yielding another value. When
|
|
|
|
:meth:`asend` is called to start the asynchronous
|
|
|
|
generator, it must be called with :const:`None` as the argument,
|
|
|
|
because there is no yield expression that could receive the value.
|
|
|
|
|
|
|
|
|
2022-09-30 05:43:02 -03:00
|
|
|
.. coroutinemethod:: agen.athrow(value)
|
|
|
|
agen.athrow(type[, value[, traceback]])
|
2016-12-15 18:36:05 -04:00
|
|
|
|
|
|
|
Returns an awaitable that raises an exception of type ``type`` at the point
|
|
|
|
where the asynchronous generator was paused, and returns the next value
|
|
|
|
yielded by the generator function as the value of the raised
|
|
|
|
:exc:`StopIteration` exception. If the asynchronous generator exits
|
2019-05-13 10:05:20 -03:00
|
|
|
without yielding another value, a :exc:`StopAsyncIteration` exception is
|
2016-12-15 18:36:05 -04:00
|
|
|
raised by the awaitable.
|
|
|
|
If the generator function does not catch the passed-in exception, or
|
2017-05-19 17:37:57 -03:00
|
|
|
raises a different exception, then when the awaitable is run that exception
|
2016-12-15 18:36:05 -04:00
|
|
|
propagates to the caller of the awaitable.
|
|
|
|
|
2022-09-30 05:43:02 -03:00
|
|
|
.. versionchanged:: 3.12
|
|
|
|
|
|
|
|
The second signature \(type\[, value\[, traceback\]\]\) is deprecated and
|
|
|
|
may be removed in a future version of Python.
|
|
|
|
|
2023-05-04 07:30:24 -03:00
|
|
|
.. index:: pair: exception; GeneratorExit
|
2016-12-15 18:36:05 -04:00
|
|
|
|
|
|
|
|
|
|
|
.. coroutinemethod:: agen.aclose()
|
|
|
|
|
|
|
|
Returns an awaitable that when run will throw a :exc:`GeneratorExit` into
|
|
|
|
the asynchronous generator function at the point where it was paused.
|
|
|
|
If the asynchronous generator function then exits gracefully, is already
|
|
|
|
closed, or raises :exc:`GeneratorExit` (by not catching the exception),
|
|
|
|
then the returned awaitable will raise a :exc:`StopIteration` exception.
|
|
|
|
Any further awaitables returned by subsequent calls to the asynchronous
|
|
|
|
generator will raise a :exc:`StopAsyncIteration` exception. If the
|
|
|
|
asynchronous generator yields a value, a :exc:`RuntimeError` is raised
|
|
|
|
by the awaitable. If the asynchronous generator raises any other exception,
|
|
|
|
it is propagated to the caller of the awaitable. If the asynchronous
|
|
|
|
generator has already exited due to an exception or normal exit, then
|
|
|
|
further calls to :meth:`aclose` will return an awaitable that does nothing.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. _primaries:
|
|
|
|
|
|
|
|
Primaries
|
|
|
|
=========
|
|
|
|
|
|
|
|
.. index:: single: primary
|
|
|
|
|
|
|
|
Primaries represent the most tightly bound operations of the language. Their
|
|
|
|
syntax is:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-08-15 11:28:22 -03:00
|
|
|
primary: `atom` | `attributeref` | `subscription` | `slicing` | `call`
|
|
|
|
|
|
|
|
|
|
|
|
.. _attribute-references:
|
|
|
|
|
|
|
|
Attribute references
|
|
|
|
--------------------
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
pair: attribute; reference
|
2018-10-28 08:41:26 -03:00
|
|
|
single: . (dot); attribute reference
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
An attribute reference is a primary followed by a period and a name:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-08-15 11:28:22 -03:00
|
|
|
attributeref: `primary` "." `identifier`
|
|
|
|
|
|
|
|
.. index::
|
2023-05-04 07:30:24 -03:00
|
|
|
pair: exception; AttributeError
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; module
|
|
|
|
pair: object; list
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The primary must evaluate to an object of a type that supports attribute
|
2007-09-07 11:15:41 -03:00
|
|
|
references, which most objects do. This object is then asked to produce the
|
2023-11-25 18:20:53 -04:00
|
|
|
attribute whose name is the identifier. The type and value produced is
|
|
|
|
determined by the object. Multiple evaluations of the same attribute
|
|
|
|
reference may yield different objects.
|
|
|
|
|
|
|
|
This production can be customized by overriding the
|
|
|
|
:meth:`~object.__getattribute__` method or the :meth:`~object.__getattr__`
|
|
|
|
method. The :meth:`!__getattribute__` method is called first and either
|
|
|
|
returns a value or raises :exc:`AttributeError` if the attribute is not
|
|
|
|
available.
|
|
|
|
|
|
|
|
If an :exc:`AttributeError` is raised and the object has a :meth:`!__getattr__`
|
|
|
|
method, that method is called as a fallback.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. _subscriptions:
|
|
|
|
|
|
|
|
Subscriptions
|
|
|
|
-------------
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: subscription
|
2018-10-28 08:41:26 -03:00
|
|
|
single: [] (square brackets); subscription
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index::
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; sequence
|
|
|
|
pair: object; mapping
|
|
|
|
pair: object; string
|
|
|
|
pair: object; tuple
|
|
|
|
pair: object; list
|
|
|
|
pair: object; dictionary
|
2007-08-15 11:28:22 -03:00
|
|
|
pair: sequence; item
|
|
|
|
|
2022-03-07 23:49:28 -04:00
|
|
|
The subscription of an instance of a :ref:`container class <sequence-types>`
|
|
|
|
will generally select an element from the container. The subscription of a
|
|
|
|
:term:`generic class <generic type>` will generally return a
|
|
|
|
:ref:`GenericAlias <types-genericalias>` object.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-08-15 11:28:22 -03:00
|
|
|
subscription: `primary` "[" `expression_list` "]"
|
|
|
|
|
2022-03-07 23:49:28 -04:00
|
|
|
When an object is subscripted, the interpreter will evaluate the primary and
|
|
|
|
the expression list.
|
2007-09-07 11:15:41 -03:00
|
|
|
|
2022-03-07 23:49:28 -04:00
|
|
|
The primary must evaluate to an object that supports subscription. An object
|
|
|
|
may support subscription through defining one or both of
|
|
|
|
:meth:`~object.__getitem__` and :meth:`~object.__class_getitem__`. When the
|
|
|
|
primary is subscripted, the evaluated result of the expression list will be
|
|
|
|
passed to one of these methods. For more details on when ``__class_getitem__``
|
|
|
|
is called instead of ``__getitem__``, see :ref:`classgetitem-versus-getitem`.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2022-03-07 23:49:28 -04:00
|
|
|
If the expression list contains at least one comma, it will evaluate to a
|
|
|
|
:class:`tuple` containing the items of the expression list. Otherwise, the
|
|
|
|
expression list will evaluate to the value of the list's sole member.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2022-03-07 23:49:28 -04:00
|
|
|
For built-in objects, there are two types of objects that support subscription
|
|
|
|
via :meth:`~object.__getitem__`:
|
|
|
|
|
|
|
|
1. Mappings. If the primary is a :term:`mapping`, the expression list must
|
|
|
|
evaluate to an object whose value is one of the keys of the mapping, and the
|
|
|
|
subscription selects the value in the mapping that corresponds to that key.
|
|
|
|
An example of a builtin mapping class is the :class:`dict` class.
|
|
|
|
2. Sequences. If the primary is a :term:`sequence`, the expression list must
|
|
|
|
evaluate to an :class:`int` or a :class:`slice` (as discussed in the
|
|
|
|
following section). Examples of builtin sequence classes include the
|
|
|
|
:class:`str`, :class:`list` and :class:`tuple` classes.
|
2010-09-14 21:09:26 -03:00
|
|
|
|
|
|
|
The formal syntax makes no special provision for negative indices in
|
2022-03-07 23:49:28 -04:00
|
|
|
:term:`sequences <sequence>`. However, built-in sequences all provide a :meth:`~object.__getitem__`
|
2010-09-14 21:09:26 -03:00
|
|
|
method that interprets negative indices by adding the length of the sequence
|
2022-03-07 23:49:28 -04:00
|
|
|
to the index so that, for example, ``x[-1]`` selects the last item of ``x``. The
|
2010-09-14 21:09:26 -03:00
|
|
|
resulting value must be a nonnegative integer less than the number of items in
|
|
|
|
the sequence, and the subscription selects the item whose index is that value
|
|
|
|
(counting from zero). Since the support for negative indices and slicing
|
2023-10-19 12:05:05 -03:00
|
|
|
occurs in the object's :meth:`~object.__getitem__` method, subclasses overriding
|
2010-09-14 21:09:26 -03:00
|
|
|
this method will need to explicitly add that support.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index::
|
|
|
|
single: character
|
|
|
|
pair: string; item
|
|
|
|
|
2022-03-07 23:49:28 -04:00
|
|
|
A :class:`string <str>` is a special kind of sequence whose items are
|
|
|
|
*characters*. A character is not a separate data type but a
|
2007-08-15 11:28:22 -03:00
|
|
|
string of exactly one character.
|
|
|
|
|
|
|
|
|
|
|
|
.. _slicings:
|
|
|
|
|
|
|
|
Slicings
|
|
|
|
--------
|
|
|
|
|
|
|
|
.. index::
|
|
|
|
single: slicing
|
|
|
|
single: slice
|
2018-10-28 08:41:26 -03:00
|
|
|
single: : (colon); slicing
|
|
|
|
single: , (comma); slicing
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index::
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; sequence
|
|
|
|
pair: object; string
|
|
|
|
pair: object; tuple
|
|
|
|
pair: object; list
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
A slicing selects a range of items in a sequence object (e.g., a string, tuple
|
|
|
|
or list). Slicings may be used as expressions or as targets in assignment or
|
|
|
|
:keyword:`del` statements. The syntax for a slicing:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2009-01-03 17:18:54 -04:00
|
|
|
slicing: `primary` "[" `slice_list` "]"
|
2007-08-15 11:28:22 -03:00
|
|
|
slice_list: `slice_item` ("," `slice_item`)* [","]
|
2007-09-04 03:35:14 -03:00
|
|
|
slice_item: `expression` | `proper_slice`
|
2007-09-04 06:03:59 -03:00
|
|
|
proper_slice: [`lower_bound`] ":" [`upper_bound`] [ ":" [`stride`] ]
|
2007-08-15 11:28:22 -03:00
|
|
|
lower_bound: `expression`
|
|
|
|
upper_bound: `expression`
|
|
|
|
stride: `expression`
|
|
|
|
|
|
|
|
There is ambiguity in the formal syntax here: anything that looks like an
|
|
|
|
expression list also looks like a slice list, so any subscription can be
|
|
|
|
interpreted as a slicing. Rather than further complicating the syntax, this is
|
|
|
|
disambiguated by defining that in this case the interpretation as a subscription
|
|
|
|
takes priority over the interpretation as a slicing (this is the case if the
|
2007-09-04 06:03:59 -03:00
|
|
|
slice list contains no proper slice).
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index::
|
|
|
|
single: start (slice object attribute)
|
|
|
|
single: stop (slice object attribute)
|
|
|
|
single: step (slice object attribute)
|
|
|
|
|
2014-10-31 06:38:49 -03:00
|
|
|
The semantics for a slicing are as follows. The primary is indexed (using the
|
2023-10-19 12:05:05 -03:00
|
|
|
same :meth:`~object.__getitem__` method as
|
2007-09-07 11:15:41 -03:00
|
|
|
normal subscription) with a key that is constructed from the slice list, as
|
|
|
|
follows. If the slice list contains at least one comma, the key is a tuple
|
|
|
|
containing the conversion of the slice items; otherwise, the conversion of the
|
|
|
|
lone slice item is the key. The conversion of a slice item that is an
|
|
|
|
expression is that expression. The conversion of a proper slice is a slice
|
2013-10-09 08:02:31 -03:00
|
|
|
object (see section :ref:`types`) whose :attr:`~slice.start`,
|
|
|
|
:attr:`~slice.stop` and :attr:`~slice.step` attributes are the values of the
|
|
|
|
expressions given as lower bound, upper bound and stride, respectively,
|
|
|
|
substituting ``None`` for missing expressions.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
2012-12-25 18:54:44 -04:00
|
|
|
.. index::
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; callable
|
2012-12-25 18:54:44 -04:00
|
|
|
single: call
|
|
|
|
single: argument; call semantics
|
2018-10-28 08:41:26 -03:00
|
|
|
single: () (parentheses); call
|
|
|
|
single: , (comma); argument list
|
|
|
|
single: = (equals); in function calls
|
2012-12-25 18:54:44 -04:00
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. _calls:
|
|
|
|
|
|
|
|
Calls
|
|
|
|
-----
|
|
|
|
|
2012-12-25 18:54:44 -04:00
|
|
|
A call calls a callable object (e.g., a :term:`function`) with a possibly empty
|
|
|
|
series of :term:`arguments <argument>`:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2008-09-21 14:03:29 -03:00
|
|
|
call: `primary` "(" [`argument_list` [","] | `comprehension`] ")"
|
2016-06-11 22:46:50 -03:00
|
|
|
argument_list: `positional_arguments` ["," `starred_and_keywords`]
|
|
|
|
: ["," `keywords_arguments`]
|
|
|
|
: | `starred_and_keywords` ["," `keywords_arguments`]
|
|
|
|
: | `keywords_arguments`
|
2020-03-06 01:19:22 -04:00
|
|
|
positional_arguments: positional_item ("," positional_item)*
|
|
|
|
positional_item: `assignment_expression` | "*" `expression`
|
2016-06-11 22:46:50 -03:00
|
|
|
starred_and_keywords: ("*" `expression` | `keyword_item`)
|
|
|
|
: ("," "*" `expression` | "," `keyword_item`)*
|
|
|
|
keywords_arguments: (`keyword_item` | "**" `expression`)
|
2016-12-24 06:20:38 -04:00
|
|
|
: ("," `keyword_item` | "," "**" `expression`)*
|
2007-08-15 11:28:22 -03:00
|
|
|
keyword_item: `identifier` "=" `expression`
|
|
|
|
|
2014-05-27 02:20:37 -03:00
|
|
|
An optional trailing comma may be present after the positional and keyword arguments
|
|
|
|
but does not affect the semantics.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2012-12-25 18:54:44 -04:00
|
|
|
.. index::
|
|
|
|
single: parameter; call semantics
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
The primary must evaluate to a callable object (user-defined functions, built-in
|
|
|
|
functions, methods of built-in objects, class objects, methods of class
|
2024-01-22 12:21:14 -04:00
|
|
|
instances, and all objects having a :meth:`~object.__call__` method are callable). All
|
2007-09-07 11:15:41 -03:00
|
|
|
argument expressions are evaluated before the call is attempted. Please refer
|
2012-12-25 18:54:44 -04:00
|
|
|
to section :ref:`function` for the syntax of formal :term:`parameter` lists.
|
2007-09-07 11:15:41 -03:00
|
|
|
|
|
|
|
.. XXX update with kwonly args PEP
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
If keyword arguments are present, they are first converted to positional
|
|
|
|
arguments, as follows. First, a list of unfilled slots is created for the
|
|
|
|
formal parameters. If there are N positional arguments, they are placed in the
|
|
|
|
first N slots. Next, for each keyword argument, the identifier is used to
|
|
|
|
determine the corresponding slot (if the identifier is the same as the first
|
|
|
|
formal parameter name, the first slot is used, and so on). If the slot is
|
2021-11-06 14:26:43 -03:00
|
|
|
already filled, a :exc:`TypeError` exception is raised. Otherwise, the
|
|
|
|
argument is placed in the slot, filling it (even if the expression is
|
2007-08-15 11:28:22 -03:00
|
|
|
``None``, it fills the slot). When all arguments have been processed, the slots
|
|
|
|
that are still unfilled are filled with the corresponding default value from the
|
|
|
|
function definition. (Default values are calculated, once, when the function is
|
|
|
|
defined; thus, a mutable object such as a list or dictionary used as default
|
|
|
|
value will be shared by all calls that don't specify an argument value for the
|
|
|
|
corresponding slot; this should usually be avoided.) If there are any unfilled
|
|
|
|
slots for which no default value is specified, a :exc:`TypeError` exception is
|
|
|
|
raised. Otherwise, the list of filled slots is used as the argument list for
|
|
|
|
the call.
|
|
|
|
|
Merged revisions 75365,75394,75402-75403,75418,75459,75484,75592-75596,75600,75602-75607,75610-75613,75616-75617,75623,75627,75640,75647,75696,75795 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r75365 | georg.brandl | 2009-10-11 22:16:16 +0200 (So, 11 Okt 2009) | 1 line
Fix broken links found by "make linkcheck". scipy.org seems to be done right now, so I could not verify links going there.
........
r75394 | georg.brandl | 2009-10-13 20:10:59 +0200 (Di, 13 Okt 2009) | 1 line
Fix markup.
........
r75402 | georg.brandl | 2009-10-14 17:51:48 +0200 (Mi, 14 Okt 2009) | 1 line
#7125: fix typo.
........
r75403 | georg.brandl | 2009-10-14 17:57:46 +0200 (Mi, 14 Okt 2009) | 1 line
#7126: os.environ changes *do* take effect in subprocesses started with os.system().
........
r75418 | georg.brandl | 2009-10-14 20:48:32 +0200 (Mi, 14 Okt 2009) | 1 line
#7116: str.join() takes an iterable.
........
r75459 | georg.brandl | 2009-10-17 10:57:43 +0200 (Sa, 17 Okt 2009) | 1 line
Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.
........
r75484 | georg.brandl | 2009-10-18 09:58:12 +0200 (So, 18 Okt 2009) | 1 line
Fix missing word.
........
r75592 | georg.brandl | 2009-10-22 09:05:48 +0200 (Do, 22 Okt 2009) | 1 line
Fix punctuation.
........
r75593 | georg.brandl | 2009-10-22 09:06:49 +0200 (Do, 22 Okt 2009) | 1 line
Revert unintended change.
........
r75594 | georg.brandl | 2009-10-22 09:56:02 +0200 (Do, 22 Okt 2009) | 1 line
Fix markup.
........
r75595 | georg.brandl | 2009-10-22 09:56:56 +0200 (Do, 22 Okt 2009) | 1 line
Fix duplicate target.
........
r75596 | georg.brandl | 2009-10-22 10:05:04 +0200 (Do, 22 Okt 2009) | 1 line
Add a new directive marking up implementation details and start using it.
........
r75600 | georg.brandl | 2009-10-22 13:01:46 +0200 (Do, 22 Okt 2009) | 1 line
Make it more robust.
........
r75602 | georg.brandl | 2009-10-22 13:28:06 +0200 (Do, 22 Okt 2009) | 1 line
Document new directive.
........
r75603 | georg.brandl | 2009-10-22 13:28:23 +0200 (Do, 22 Okt 2009) | 1 line
Allow short form with text as argument.
........
r75604 | georg.brandl | 2009-10-22 13:36:50 +0200 (Do, 22 Okt 2009) | 1 line
Fix stylesheet for multi-paragraph impl-details.
........
r75605 | georg.brandl | 2009-10-22 13:48:10 +0200 (Do, 22 Okt 2009) | 1 line
Use "impl-detail" directive where applicable.
........
r75606 | georg.brandl | 2009-10-22 17:00:06 +0200 (Do, 22 Okt 2009) | 1 line
#6324: membership test tries iteration via __iter__.
........
r75607 | georg.brandl | 2009-10-22 17:04:09 +0200 (Do, 22 Okt 2009) | 1 line
#7088: document new functions in signal as Unix-only.
........
r75610 | georg.brandl | 2009-10-22 17:27:24 +0200 (Do, 22 Okt 2009) | 1 line
Reorder __slots__ fine print and add a clarification.
........
r75611 | georg.brandl | 2009-10-22 17:42:32 +0200 (Do, 22 Okt 2009) | 1 line
#7035: improve docs of the various <method>_errors() functions, and give them docstrings.
........
r75612 | georg.brandl | 2009-10-22 17:52:15 +0200 (Do, 22 Okt 2009) | 1 line
#7156: document curses as Unix-only.
........
r75613 | georg.brandl | 2009-10-22 17:54:35 +0200 (Do, 22 Okt 2009) | 1 line
#6977: getopt does not support optional option arguments.
........
r75616 | georg.brandl | 2009-10-22 18:17:05 +0200 (Do, 22 Okt 2009) | 1 line
Add proper references.
........
r75617 | georg.brandl | 2009-10-22 18:20:55 +0200 (Do, 22 Okt 2009) | 1 line
Make printout margin important.
........
r75623 | georg.brandl | 2009-10-23 10:14:44 +0200 (Fr, 23 Okt 2009) | 1 line
#7188: fix optionxform() docs.
........
r75627 | fred.drake | 2009-10-23 15:04:51 +0200 (Fr, 23 Okt 2009) | 2 lines
add further note about what's passed to optionxform
........
r75640 | neil.schemenauer | 2009-10-23 21:58:17 +0200 (Fr, 23 Okt 2009) | 2 lines
Improve some docstrings in the 'warnings' module.
........
r75647 | georg.brandl | 2009-10-24 12:04:19 +0200 (Sa, 24 Okt 2009) | 1 line
Fix markup.
........
r75696 | georg.brandl | 2009-10-25 21:25:43 +0100 (So, 25 Okt 2009) | 1 line
Fix a demo.
........
r75795 | georg.brandl | 2009-10-27 16:10:22 +0100 (Di, 27 Okt 2009) | 1 line
Fix a strange mis-edit.
........
2009-10-27 12:28:25 -03:00
|
|
|
.. impl-detail::
|
2009-01-03 17:18:54 -04:00
|
|
|
|
Merged revisions 75365,75394,75402-75403,75418,75459,75484,75592-75596,75600,75602-75607,75610-75613,75616-75617,75623,75627,75640,75647,75696,75795 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r75365 | georg.brandl | 2009-10-11 22:16:16 +0200 (So, 11 Okt 2009) | 1 line
Fix broken links found by "make linkcheck". scipy.org seems to be done right now, so I could not verify links going there.
........
r75394 | georg.brandl | 2009-10-13 20:10:59 +0200 (Di, 13 Okt 2009) | 1 line
Fix markup.
........
r75402 | georg.brandl | 2009-10-14 17:51:48 +0200 (Mi, 14 Okt 2009) | 1 line
#7125: fix typo.
........
r75403 | georg.brandl | 2009-10-14 17:57:46 +0200 (Mi, 14 Okt 2009) | 1 line
#7126: os.environ changes *do* take effect in subprocesses started with os.system().
........
r75418 | georg.brandl | 2009-10-14 20:48:32 +0200 (Mi, 14 Okt 2009) | 1 line
#7116: str.join() takes an iterable.
........
r75459 | georg.brandl | 2009-10-17 10:57:43 +0200 (Sa, 17 Okt 2009) | 1 line
Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.
........
r75484 | georg.brandl | 2009-10-18 09:58:12 +0200 (So, 18 Okt 2009) | 1 line
Fix missing word.
........
r75592 | georg.brandl | 2009-10-22 09:05:48 +0200 (Do, 22 Okt 2009) | 1 line
Fix punctuation.
........
r75593 | georg.brandl | 2009-10-22 09:06:49 +0200 (Do, 22 Okt 2009) | 1 line
Revert unintended change.
........
r75594 | georg.brandl | 2009-10-22 09:56:02 +0200 (Do, 22 Okt 2009) | 1 line
Fix markup.
........
r75595 | georg.brandl | 2009-10-22 09:56:56 +0200 (Do, 22 Okt 2009) | 1 line
Fix duplicate target.
........
r75596 | georg.brandl | 2009-10-22 10:05:04 +0200 (Do, 22 Okt 2009) | 1 line
Add a new directive marking up implementation details and start using it.
........
r75600 | georg.brandl | 2009-10-22 13:01:46 +0200 (Do, 22 Okt 2009) | 1 line
Make it more robust.
........
r75602 | georg.brandl | 2009-10-22 13:28:06 +0200 (Do, 22 Okt 2009) | 1 line
Document new directive.
........
r75603 | georg.brandl | 2009-10-22 13:28:23 +0200 (Do, 22 Okt 2009) | 1 line
Allow short form with text as argument.
........
r75604 | georg.brandl | 2009-10-22 13:36:50 +0200 (Do, 22 Okt 2009) | 1 line
Fix stylesheet for multi-paragraph impl-details.
........
r75605 | georg.brandl | 2009-10-22 13:48:10 +0200 (Do, 22 Okt 2009) | 1 line
Use "impl-detail" directive where applicable.
........
r75606 | georg.brandl | 2009-10-22 17:00:06 +0200 (Do, 22 Okt 2009) | 1 line
#6324: membership test tries iteration via __iter__.
........
r75607 | georg.brandl | 2009-10-22 17:04:09 +0200 (Do, 22 Okt 2009) | 1 line
#7088: document new functions in signal as Unix-only.
........
r75610 | georg.brandl | 2009-10-22 17:27:24 +0200 (Do, 22 Okt 2009) | 1 line
Reorder __slots__ fine print and add a clarification.
........
r75611 | georg.brandl | 2009-10-22 17:42:32 +0200 (Do, 22 Okt 2009) | 1 line
#7035: improve docs of the various <method>_errors() functions, and give them docstrings.
........
r75612 | georg.brandl | 2009-10-22 17:52:15 +0200 (Do, 22 Okt 2009) | 1 line
#7156: document curses as Unix-only.
........
r75613 | georg.brandl | 2009-10-22 17:54:35 +0200 (Do, 22 Okt 2009) | 1 line
#6977: getopt does not support optional option arguments.
........
r75616 | georg.brandl | 2009-10-22 18:17:05 +0200 (Do, 22 Okt 2009) | 1 line
Add proper references.
........
r75617 | georg.brandl | 2009-10-22 18:20:55 +0200 (Do, 22 Okt 2009) | 1 line
Make printout margin important.
........
r75623 | georg.brandl | 2009-10-23 10:14:44 +0200 (Fr, 23 Okt 2009) | 1 line
#7188: fix optionxform() docs.
........
r75627 | fred.drake | 2009-10-23 15:04:51 +0200 (Fr, 23 Okt 2009) | 2 lines
add further note about what's passed to optionxform
........
r75640 | neil.schemenauer | 2009-10-23 21:58:17 +0200 (Fr, 23 Okt 2009) | 2 lines
Improve some docstrings in the 'warnings' module.
........
r75647 | georg.brandl | 2009-10-24 12:04:19 +0200 (Sa, 24 Okt 2009) | 1 line
Fix markup.
........
r75696 | georg.brandl | 2009-10-25 21:25:43 +0100 (So, 25 Okt 2009) | 1 line
Fix a demo.
........
r75795 | georg.brandl | 2009-10-27 16:10:22 +0100 (Di, 27 Okt 2009) | 1 line
Fix a strange mis-edit.
........
2009-10-27 12:28:25 -03:00
|
|
|
An implementation may provide built-in functions whose positional parameters
|
|
|
|
do not have names, even if they are 'named' for the purpose of documentation,
|
|
|
|
and which therefore cannot be supplied by keyword. In CPython, this is the
|
2010-10-06 07:11:56 -03:00
|
|
|
case for functions implemented in C that use :c:func:`PyArg_ParseTuple` to
|
Merged revisions 75365,75394,75402-75403,75418,75459,75484,75592-75596,75600,75602-75607,75610-75613,75616-75617,75623,75627,75640,75647,75696,75795 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r75365 | georg.brandl | 2009-10-11 22:16:16 +0200 (So, 11 Okt 2009) | 1 line
Fix broken links found by "make linkcheck". scipy.org seems to be done right now, so I could not verify links going there.
........
r75394 | georg.brandl | 2009-10-13 20:10:59 +0200 (Di, 13 Okt 2009) | 1 line
Fix markup.
........
r75402 | georg.brandl | 2009-10-14 17:51:48 +0200 (Mi, 14 Okt 2009) | 1 line
#7125: fix typo.
........
r75403 | georg.brandl | 2009-10-14 17:57:46 +0200 (Mi, 14 Okt 2009) | 1 line
#7126: os.environ changes *do* take effect in subprocesses started with os.system().
........
r75418 | georg.brandl | 2009-10-14 20:48:32 +0200 (Mi, 14 Okt 2009) | 1 line
#7116: str.join() takes an iterable.
........
r75459 | georg.brandl | 2009-10-17 10:57:43 +0200 (Sa, 17 Okt 2009) | 1 line
Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.
........
r75484 | georg.brandl | 2009-10-18 09:58:12 +0200 (So, 18 Okt 2009) | 1 line
Fix missing word.
........
r75592 | georg.brandl | 2009-10-22 09:05:48 +0200 (Do, 22 Okt 2009) | 1 line
Fix punctuation.
........
r75593 | georg.brandl | 2009-10-22 09:06:49 +0200 (Do, 22 Okt 2009) | 1 line
Revert unintended change.
........
r75594 | georg.brandl | 2009-10-22 09:56:02 +0200 (Do, 22 Okt 2009) | 1 line
Fix markup.
........
r75595 | georg.brandl | 2009-10-22 09:56:56 +0200 (Do, 22 Okt 2009) | 1 line
Fix duplicate target.
........
r75596 | georg.brandl | 2009-10-22 10:05:04 +0200 (Do, 22 Okt 2009) | 1 line
Add a new directive marking up implementation details and start using it.
........
r75600 | georg.brandl | 2009-10-22 13:01:46 +0200 (Do, 22 Okt 2009) | 1 line
Make it more robust.
........
r75602 | georg.brandl | 2009-10-22 13:28:06 +0200 (Do, 22 Okt 2009) | 1 line
Document new directive.
........
r75603 | georg.brandl | 2009-10-22 13:28:23 +0200 (Do, 22 Okt 2009) | 1 line
Allow short form with text as argument.
........
r75604 | georg.brandl | 2009-10-22 13:36:50 +0200 (Do, 22 Okt 2009) | 1 line
Fix stylesheet for multi-paragraph impl-details.
........
r75605 | georg.brandl | 2009-10-22 13:48:10 +0200 (Do, 22 Okt 2009) | 1 line
Use "impl-detail" directive where applicable.
........
r75606 | georg.brandl | 2009-10-22 17:00:06 +0200 (Do, 22 Okt 2009) | 1 line
#6324: membership test tries iteration via __iter__.
........
r75607 | georg.brandl | 2009-10-22 17:04:09 +0200 (Do, 22 Okt 2009) | 1 line
#7088: document new functions in signal as Unix-only.
........
r75610 | georg.brandl | 2009-10-22 17:27:24 +0200 (Do, 22 Okt 2009) | 1 line
Reorder __slots__ fine print and add a clarification.
........
r75611 | georg.brandl | 2009-10-22 17:42:32 +0200 (Do, 22 Okt 2009) | 1 line
#7035: improve docs of the various <method>_errors() functions, and give them docstrings.
........
r75612 | georg.brandl | 2009-10-22 17:52:15 +0200 (Do, 22 Okt 2009) | 1 line
#7156: document curses as Unix-only.
........
r75613 | georg.brandl | 2009-10-22 17:54:35 +0200 (Do, 22 Okt 2009) | 1 line
#6977: getopt does not support optional option arguments.
........
r75616 | georg.brandl | 2009-10-22 18:17:05 +0200 (Do, 22 Okt 2009) | 1 line
Add proper references.
........
r75617 | georg.brandl | 2009-10-22 18:20:55 +0200 (Do, 22 Okt 2009) | 1 line
Make printout margin important.
........
r75623 | georg.brandl | 2009-10-23 10:14:44 +0200 (Fr, 23 Okt 2009) | 1 line
#7188: fix optionxform() docs.
........
r75627 | fred.drake | 2009-10-23 15:04:51 +0200 (Fr, 23 Okt 2009) | 2 lines
add further note about what's passed to optionxform
........
r75640 | neil.schemenauer | 2009-10-23 21:58:17 +0200 (Fr, 23 Okt 2009) | 2 lines
Improve some docstrings in the 'warnings' module.
........
r75647 | georg.brandl | 2009-10-24 12:04:19 +0200 (Sa, 24 Okt 2009) | 1 line
Fix markup.
........
r75696 | georg.brandl | 2009-10-25 21:25:43 +0100 (So, 25 Okt 2009) | 1 line
Fix a demo.
........
r75795 | georg.brandl | 2009-10-27 16:10:22 +0100 (Di, 27 Okt 2009) | 1 line
Fix a strange mis-edit.
........
2009-10-27 12:28:25 -03:00
|
|
|
parse their arguments.
|
Merged revisions 62425-62429,62434-62436,62441,62444,62446-62448,62450-62455,62463,62465-62466,62469,62474,62476-62478,62480,62485,62492,62497-62498,62500,62507,62513-62514,62516,62521,62531,62535,62545-62546,62548-62551,62553-62559,62569,62574,62577,62593,62595,62604-62606,62608,62616,62626-62627,62636,62638,62644-62645,62647-62648,62651-62653,62656,62661,62663,62680,62686-62687,62696,62699-62703,62711 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
................
r62425 | andrew.kuchling | 2008-04-21 03:45:57 +0200 (Mon, 21 Apr 2008) | 1 line
Comment typo
................
r62426 | mark.dickinson | 2008-04-21 03:55:50 +0200 (Mon, 21 Apr 2008) | 2 lines
Silence 'r may be used uninitialized' compiler warning.
................
r62427 | andrew.kuchling | 2008-04-21 04:08:00 +0200 (Mon, 21 Apr 2008) | 1 line
Markup fix
................
r62428 | andrew.kuchling | 2008-04-21 04:08:13 +0200 (Mon, 21 Apr 2008) | 1 line
Wording changes
................
r62429 | andrew.kuchling | 2008-04-21 04:14:24 +0200 (Mon, 21 Apr 2008) | 1 line
Add various items
................
r62434 | thomas.heller | 2008-04-21 15:46:55 +0200 (Mon, 21 Apr 2008) | 1 line
Fix typo.
................
r62435 | david.goodger | 2008-04-21 16:40:22 +0200 (Mon, 21 Apr 2008) | 1 line
corrections ("reStructuredText" is one word)
................
r62436 | david.goodger | 2008-04-21 16:43:33 +0200 (Mon, 21 Apr 2008) | 1 line
capitalization
................
r62441 | gregory.p.smith | 2008-04-21 19:46:40 +0200 (Mon, 21 Apr 2008) | 2 lines
explicitly flush after the ... since there wasn't a newline
................
r62444 | jeroen.ruigrok | 2008-04-21 22:15:39 +0200 (Mon, 21 Apr 2008) | 2 lines
Windows x64 also falls under VER_PLATFORM_WIN32_NT.
................
r62446 | gregory.p.smith | 2008-04-21 23:31:08 +0200 (Mon, 21 Apr 2008) | 3 lines
If sys.stdin is not a tty, fall back to default_getpass after printing
a warning instead of failing with a termios.error.
................
r62447 | mark.dickinson | 2008-04-22 00:32:24 +0200 (Tue, 22 Apr 2008) | 8 lines
test_math and test_cmath are failing on the FreeBSD 6.2 trunk buildbot,
apparently because tanh(-0.) loses the sign of zero on that platform.
If true, this is a bug in FreeBSD.
Added a configure test to verify this. I still need to figure out
how best to deal with this failure.
................
r62448 | amaury.forgeotdarc | 2008-04-22 00:35:30 +0200 (Tue, 22 Apr 2008) | 7 lines
Issue 2665: On Windows, sys.stderr does not contain a valid file when running without a console.
It seems to work, but will fail at the first flush.
This causes IDLE to crash when too many warnings are printed.
Will backport.
................
r62450 | benjamin.peterson | 2008-04-22 00:57:00 +0200 (Tue, 22 Apr 2008) | 2 lines
Fix Sphinx warnings
................
r62451 | mark.dickinson | 2008-04-22 02:54:27 +0200 (Tue, 22 Apr 2008) | 3 lines
Make configure test for tanh(-0.) == -0. committed in r62447 actually
work. (The test wasn't properly linked with libm. Sigh.)
................
r62452 | benjamin.peterson | 2008-04-22 04:16:03 +0200 (Tue, 22 Apr 2008) | 2 lines
Various io doc updates
................
r62453 | neal.norwitz | 2008-04-22 07:07:47 +0200 (Tue, 22 Apr 2008) | 1 line
Add Thomas Lee
................
r62454 | gregory.p.smith | 2008-04-22 10:08:41 +0200 (Tue, 22 Apr 2008) | 8 lines
Major improvements:
* Default to using /dev/tty for the password prompt and input before
falling back to sys.stdin and sys.stderr.
* Use sys.stderr instead of sys.stdout.
* print the 'password may be echoed' warning to stream used to display
the prompt rather than always sys.stderr.
* warn() with GetPassWarning when input may be echoed.
................
r62455 | gregory.p.smith | 2008-04-22 10:11:33 +0200 (Tue, 22 Apr 2008) | 2 lines
update the getpass entry
................
r62463 | amaury.forgeotdarc | 2008-04-22 23:14:41 +0200 (Tue, 22 Apr 2008) | 5 lines
Issue #2670: urllib2.build_opener() failed when two handlers
derive the same default base class.
Will backport.
................
r62465 | skip.montanaro | 2008-04-23 00:45:09 +0200 (Wed, 23 Apr 2008) | 3 lines
Factor in documentation changes from issue 1753732.
................
r62466 | gregory.p.smith | 2008-04-23 03:06:42 +0200 (Wed, 23 Apr 2008) | 2 lines
syntax fixup
................
r62469 | benjamin.peterson | 2008-04-23 22:38:06 +0200 (Wed, 23 Apr 2008) | 2 lines
#2673 Fix example typo in optparse docs
................
r62474 | martin.v.loewis | 2008-04-24 11:50:50 +0200 (Thu, 24 Apr 2008) | 2 lines
Add Guilherme Polo.
................
r62476 | martin.v.loewis | 2008-04-24 15:16:36 +0200 (Thu, 24 Apr 2008) | 3 lines
Remove Py_Refcnt, Py_Type, Py_Size, as they were added only
for backwards compatibility, yet 2.5 did not have them at all.
................
r62477 | martin.v.loewis | 2008-04-24 15:17:24 +0200 (Thu, 24 Apr 2008) | 2 lines
Fix typo.
................
r62478 | martin.v.loewis | 2008-04-24 15:18:03 +0200 (Thu, 24 Apr 2008) | 2 lines
Add Jesus Cea.
................
r62480 | amaury.forgeotdarc | 2008-04-24 20:07:05 +0200 (Thu, 24 Apr 2008) | 4 lines
Issue2681: the literal 0o8 was wrongly accepted, and evaluated as float(0.0).
This happened only when 8 is the first digit.
Credits go to Lukas Meuser.
................
r62485 | amaury.forgeotdarc | 2008-04-24 22:10:26 +0200 (Thu, 24 Apr 2008) | 5 lines
Disable gc when running test_trace, or we may record the __del__ of collected objects.
See http://mail.python.org/pipermail/python-checkins/2008-April/068633.html
the extra events perfectly match several calls to socket._fileobject.__del__()
................
r62492 | neal.norwitz | 2008-04-25 05:40:17 +0200 (Fri, 25 Apr 2008) | 1 line
Fix typo (now -> no)
................
r62497 | armin.rigo | 2008-04-25 11:35:18 +0200 (Fri, 25 Apr 2008) | 2 lines
A new crasher.
................
r62498 | thomas.heller | 2008-04-25 17:44:16 +0200 (Fri, 25 Apr 2008) | 1 line
Add from_buffer and from_buffer_copy class methods to ctypes types.
................
r62500 | mark.dickinson | 2008-04-25 18:59:09 +0200 (Fri, 25 Apr 2008) | 3 lines
Issue 2635: fix bug in the fix_sentence_endings option to textwrap.fill.
................
r62507 | benjamin.peterson | 2008-04-25 23:43:56 +0200 (Fri, 25 Apr 2008) | 2 lines
Allow test_import to work when it is invoked directly
................
r62513 | georg.brandl | 2008-04-26 20:31:07 +0200 (Sat, 26 Apr 2008) | 2 lines
#2691: document PyLong (s)size_t APIs, patch by Alexander Belopolsky.
................
r62514 | georg.brandl | 2008-04-26 20:32:17 +0200 (Sat, 26 Apr 2008) | 2 lines
Add missing return type to dealloc.
................
r62516 | alexandre.vassalotti | 2008-04-27 02:52:24 +0200 (Sun, 27 Apr 2008) | 2 lines
Fixed URL of PEP 205 in weakref's module docstring.
................
r62521 | georg.brandl | 2008-04-27 11:39:59 +0200 (Sun, 27 Apr 2008) | 2 lines
#2677: add note that not all functions may accept keyword args.
................
r62531 | georg.brandl | 2008-04-27 19:38:55 +0200 (Sun, 27 Apr 2008) | 2 lines
Use correct XHTML tags.
................
r62535 | benjamin.peterson | 2008-04-27 20:14:39 +0200 (Sun, 27 Apr 2008) | 2 lines
#2700 Document PyNumber_ToBase
................
r62545 | skip.montanaro | 2008-04-27 22:53:57 +0200 (Sun, 27 Apr 2008) | 1 line
minor wording changes, rewrap a few lines
................
r62546 | kurt.kaiser | 2008-04-27 23:07:41 +0200 (Sun, 27 Apr 2008) | 7 lines
Home / Control-A toggles between left margin and end of leading white
space. Patch 1196903 Jeff Shute.
M idlelib/PyShell.py
M idlelib/EditorWindow.py
M idlelib/NEWS.txt
................
r62548 | kurt.kaiser | 2008-04-27 23:38:05 +0200 (Sun, 27 Apr 2008) | 2 lines
Improved AutoCompleteWindow logic. Patch 2062 Tal Einat.
................
r62549 | kurt.kaiser | 2008-04-27 23:52:19 +0200 (Sun, 27 Apr 2008) | 4 lines
Autocompletion of filenames now support alternate separators, e.g. the
'/' char on Windows. Patch 2061 Tal Einat.
................
r62550 | skip.montanaro | 2008-04-28 00:49:56 +0200 (Mon, 28 Apr 2008) | 6 lines
A few small changes:
* The only exception we should catch when trying to import cStringIO is an
ImportError.
* Delete the function signatures embedded in the mk*temp docstrings.
* The tempdir global variable was initialized twice.
................
r62551 | skip.montanaro | 2008-04-28 00:52:02 +0200 (Mon, 28 Apr 2008) | 4 lines
Wrap some long paragraphs and include the default values for optional
function parameters.
................
r62553 | skip.montanaro | 2008-04-28 04:57:23 +0200 (Mon, 28 Apr 2008) | 7 lines
Minor cleanups:
* Avoid creating unused local variables where we can. Where we can't prefix
the unused variables with '_'.
* Avoid shadowing builtins where it won't change the external interface of a
function.
* Use None as default path arg to readmodule and readmodule_ex.
................
r62554 | skip.montanaro | 2008-04-28 04:59:45 +0200 (Mon, 28 Apr 2008) | 6 lines
Correct documentation to match implementation: "Class" instead of
"class_descriptor", "Function" instead of "function_descriptor". Note
default path value for readmodule*. Wrap some long paragraphs. Don't
mention 'inpackage' which isn't part of the public API.
................
r62555 | brett.cannon | 2008-04-28 05:23:50 +0200 (Mon, 28 Apr 2008) | 5 lines
Fix a bug introduced by the warnings rewrite where tracebacks were being
improperly indented.
Closes issue #2699.
................
r62556 | skip.montanaro | 2008-04-28 05:25:37 +0200 (Mon, 28 Apr 2008) | 2 lines
Wrap some long lines.
................
r62557 | skip.montanaro | 2008-04-28 05:27:53 +0200 (Mon, 28 Apr 2008) | 6 lines
Get rid of _test(), _main(), _debug() and _check(). Tests are no longer
needed (better set available in Lib/test/test_robotparser.py). Clean up a
few PEP 8 nits (compound statements on a single line, whitespace around
operators).
................
r62558 | brett.cannon | 2008-04-28 06:50:06 +0200 (Mon, 28 Apr 2008) | 3 lines
Rename the test_traceback_print() function to traceback_print() to prevent
test_capi from automatically calling the function.
................
r62559 | georg.brandl | 2008-04-28 07:16:30 +0200 (Mon, 28 Apr 2008) | 2 lines
Fix markup.
................
r62569 | amaury.forgeotdarc | 2008-04-28 23:07:06 +0200 (Mon, 28 Apr 2008) | 5 lines
test_sundry performs minimal tests (a simple import...) on modules that are not tested otherwise.
Some of them now have tests and can be removed.
Only 70 to go...
................
r62574 | andrew.kuchling | 2008-04-29 04:03:54 +0200 (Tue, 29 Apr 2008) | 1 line
Strip down SSL docs; I'm not managing to get test programs working, so I'll just give a minimal description
................
r62577 | martin.v.loewis | 2008-04-29 08:10:53 +0200 (Tue, 29 Apr 2008) | 2 lines
Add Rodrigo and Heiko.
................
r62593 | nick.coghlan | 2008-04-30 16:23:36 +0200 (Wed, 30 Apr 2008) | 1 line
Update command line usage documentation to reflect 2.6 changes (also includes some minor cleanups). Addresses TODO list issue 2258
................
r62595 | andrew.kuchling | 2008-04-30 18:19:55 +0200 (Wed, 30 Apr 2008) | 1 line
Typo fix
................
r62604 | benjamin.peterson | 2008-04-30 23:03:58 +0200 (Wed, 30 Apr 2008) | 2 lines
make test_support's captured_output a bit more robust when exceptions happen
................
r62605 | georg.brandl | 2008-04-30 23:08:42 +0200 (Wed, 30 Apr 2008) | 2 lines
#1748: use functools.wraps instead of rolling own metadata update.
................
r62606 | benjamin.peterson | 2008-04-30 23:25:55 +0200 (Wed, 30 Apr 2008) | 2 lines
Remove some from __future__ import with_statements
................
r62608 | benjamin.peterson | 2008-05-01 00:03:36 +0200 (Thu, 01 May 2008) | 2 lines
Fix typo in whatsnew
................
r62616 | georg.brandl | 2008-05-01 20:24:32 +0200 (Thu, 01 May 2008) | 2 lines
Fix synopsis.
................
r62626 | brett.cannon | 2008-05-02 04:25:09 +0200 (Fri, 02 May 2008) | 6 lines
Fix a backwards-compatibility mistake where a new optional argument for
warnings.showwarning() was being used. This broke pre-existing replacements for
the function since they didn't support the extra argument.
Closes issue 2705.
................
r62627 | gregory.p.smith | 2008-05-02 09:26:52 +0200 (Fri, 02 May 2008) | 20 lines
This should fix issue2632. A long description of the two competing
problems is in the bug report (one old, one recently introduced trying
to fix the old one). In short:
buffer data during socket._fileobject.read() and readlines() within a
cStringIO object instead of a [] of str()s returned from the recv()
call.
This prevents excessive memory use due to the size parameter being
passed to recv() being grossly larger than the actual size of the data
returned *and* prevents excessive cpu usage due to looping in python
calling recv() with a very tiny size value if min() is used as the
previous memory-use bug "fix" did.
It also documents what the socket._fileobject._rbufsize member is
actually used for.
This is a candidate for back porting to 2.5.
................
r62636 | mark.hammond | 2008-05-02 14:48:15 +0200 (Fri, 02 May 2008) | 2 lines
#2581: Vista UAC/elevation support for bdist_wininst
................
r62638 | facundo.batista | 2008-05-02 19:39:00 +0200 (Fri, 02 May 2008) | 3 lines
Fixed some test structures. Thanks Mark Dickinson.
................
r62644 | ronald.oussoren | 2008-05-02 21:45:11 +0200 (Fri, 02 May 2008) | 7 lines
Fix for issue #2573: Can't change the framework name on OS X builds
This introduces a new configure option: --with-framework-name=NAME
(defaulting to 'Python'). This allows you to install several copies
of the Python framework with different names (such as a normal build
and a debug build).
................
r62645 | ronald.oussoren | 2008-05-02 21:58:56 +0200 (Fri, 02 May 2008) | 2 lines
Finish fix for issue2573, previous patch was incomplete.
................
r62647 | martin.v.loewis | 2008-05-02 23:30:20 +0200 (Fri, 02 May 2008) | 13 lines
Merged revisions 62263-62646 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r62470 | david.wolever | 2008-04-24 02:11:07 +0200 (Do, 24 Apr 2008) | 3 lines
Fixed up and applied the patch for #2431 -- speeding up 2to3 with a lookup table.
........
r62646 | martin.v.loewis | 2008-05-02 23:29:27 +0200 (Fr, 02 Mai 2008) | 2 lines
Fix whitespace.
........
................
r62648 | ronald.oussoren | 2008-05-02 23:42:35 +0200 (Fri, 02 May 2008) | 4 lines
Fix for #1905: PythonLauncher not working correctly on OSX 10.5/Leopard
This fixes both Python Launchar and the terminalcommand module.
................
r62651 | ronald.oussoren | 2008-05-02 23:54:56 +0200 (Fri, 02 May 2008) | 2 lines
Fix for issue #2520 (cannot import macerrors)
................
r62652 | benjamin.peterson | 2008-05-03 00:12:58 +0200 (Sat, 03 May 2008) | 2 lines
capitalization nit for reStructuredText
................
r62653 | brett.cannon | 2008-05-03 03:02:41 +0200 (Sat, 03 May 2008) | 2 lines
Fix some indentation errors.
................
r62656 | brett.cannon | 2008-05-03 05:19:39 +0200 (Sat, 03 May 2008) | 6 lines
Fix the C implementation of 'warnings' to infer the filename of the module that
raised an exception properly when __file__ is not set, __name__ == '__main__',
and sys.argv[0] is a false value.
Closes issue2743.
................
r62661 | amaury.forgeotdarc | 2008-05-03 14:21:13 +0200 (Sat, 03 May 2008) | 8 lines
In test_io, StatefulIncrementalDecoderTest was not part of the test suite.
And of course, the test failed:
a bytearray was used without reason in io.TextIOWrapper.tell().
The difference is that iterating over bytes (i.e. str in python2.6) returns 1-char bytes,
whereas bytearrays yield integers.
This code should still work with python3.0
................
r62663 | benjamin.peterson | 2008-05-03 17:56:42 +0200 (Sat, 03 May 2008) | 2 lines
The compiling struct is now passed around to all AST helpers (see issue 2720)
................
r62680 | benjamin.peterson | 2008-05-03 23:35:18 +0200 (Sat, 03 May 2008) | 2 lines
Moved testing of builtin types out of test_builtin and into type specific modules
................
r62686 | mark.dickinson | 2008-05-04 04:25:46 +0200 (Sun, 04 May 2008) | 4 lines
Make sure that Context traps and flags dictionaries have values 0 and 1
(as documented) rather than True and False.
................
r62687 | benjamin.peterson | 2008-05-04 05:05:49 +0200 (Sun, 04 May 2008) | 2 lines
Fix typo in whatsnew
................
r62696 | georg.brandl | 2008-05-04 11:15:04 +0200 (Sun, 04 May 2008) | 2 lines
#2752: wrong meaning of '' for socket host.
................
r62699 | christian.heimes | 2008-05-04 13:50:53 +0200 (Sun, 04 May 2008) | 1 line
Added note that Python requires at least Win2k SP4
................
r62700 | gerhard.haering | 2008-05-04 14:59:57 +0200 (Sun, 04 May 2008) | 3 lines
SQLite requires 64-bit integers in order to build. So the whole HAVE_LONG_LONG
#ifdefing was useless.
................
r62701 | gerhard.haering | 2008-05-04 15:15:12 +0200 (Sun, 04 May 2008) | 3 lines
Applied sqliterow-richcmp.diff patch from Thomas Heller in Issue2152. The
sqlite3.Row type is now correctly hashable.
................
r62702 | gerhard.haering | 2008-05-04 15:42:44 +0200 (Sun, 04 May 2008) | 5 lines
Implemented feature request 2157: Converter names are cut off at '('
characters. This avoids the common case of something like 'NUMBER(10)' not
being parsed as 'NUMBER', like expected. Also corrected the docs about
converter names being case-sensitive. They aren't any longer.
................
r62703 | georg.brandl | 2008-05-04 17:45:05 +0200 (Sun, 04 May 2008) | 2 lines
#2757: Remove spare newline.
................
r62711 | benjamin.peterson | 2008-05-04 21:10:02 +0200 (Sun, 04 May 2008) | 2 lines
Fix typo in bugs.rst
................
2008-05-04 19:42:01 -03:00
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
If there are more positional arguments than there are formal parameter slots, a
|
|
|
|
:exc:`TypeError` exception is raised, unless a formal parameter using the syntax
|
|
|
|
``*identifier`` is present; in this case, that formal parameter receives a tuple
|
|
|
|
containing the excess positional arguments (or an empty tuple if there were no
|
|
|
|
excess positional arguments).
|
|
|
|
|
|
|
|
If any keyword argument does not correspond to a formal parameter name, a
|
|
|
|
:exc:`TypeError` exception is raised, unless a formal parameter using the syntax
|
|
|
|
``**identifier`` is present; in this case, that formal parameter receives a
|
|
|
|
dictionary containing the excess keyword arguments (using the keywords as keys
|
|
|
|
and the argument values as corresponding values), or a (new) empty dictionary if
|
|
|
|
there were no excess keyword arguments.
|
|
|
|
|
2011-07-30 01:05:16 -03:00
|
|
|
.. index::
|
2018-10-28 08:41:26 -03:00
|
|
|
single: * (asterisk); in function calls
|
2016-06-11 22:46:50 -03:00
|
|
|
single: unpacking; in function calls
|
2011-07-30 01:05:16 -03:00
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
If the syntax ``*expression`` appears in the function call, ``expression`` must
|
2016-06-11 22:46:50 -03:00
|
|
|
evaluate to an :term:`iterable`. Elements from these iterables are
|
|
|
|
treated as if they were additional positional arguments. For the call
|
|
|
|
``f(x1, x2, *y, x3, x4)``, if *y* evaluates to a sequence *y1*, ..., *yM*,
|
|
|
|
this is equivalent to a call with M+4 positional arguments *x1*, *x2*,
|
|
|
|
*y1*, ..., *yM*, *x3*, *x4*.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2008-08-19 17:57:10 -03:00
|
|
|
A consequence of this is that although the ``*expression`` syntax may appear
|
2016-06-11 22:46:50 -03:00
|
|
|
*after* explicit keyword arguments, it is processed *before* the
|
|
|
|
keyword arguments (and any ``**expression`` arguments -- see below). So::
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
>>> def f(a, b):
|
2016-05-10 06:01:23 -03:00
|
|
|
... print(a, b)
|
2007-08-15 11:28:22 -03:00
|
|
|
...
|
|
|
|
>>> f(b=1, *(2,))
|
|
|
|
2 1
|
|
|
|
>>> f(a=1, *(2,))
|
|
|
|
Traceback (most recent call last):
|
2017-05-03 13:46:45 -03:00
|
|
|
File "<stdin>", line 1, in <module>
|
2007-08-15 11:28:22 -03:00
|
|
|
TypeError: f() got multiple values for keyword argument 'a'
|
|
|
|
>>> f(1, *(2,))
|
|
|
|
1 2
|
|
|
|
|
|
|
|
It is unusual for both keyword arguments and the ``*expression`` syntax to be
|
2021-11-06 14:26:43 -03:00
|
|
|
used in the same call, so in practice this confusion does not often arise.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2011-07-30 01:05:16 -03:00
|
|
|
.. index::
|
|
|
|
single: **; in function calls
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
If the syntax ``**expression`` appears in the function call, ``expression`` must
|
2016-06-11 22:46:50 -03:00
|
|
|
evaluate to a :term:`mapping`, the contents of which are treated as
|
2022-09-22 15:10:15 -03:00
|
|
|
additional keyword arguments. If a parameter matching a key has already been
|
|
|
|
given a value (by an explicit keyword argument, or from another unpacking),
|
2016-06-11 22:46:50 -03:00
|
|
|
a :exc:`TypeError` exception is raised.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2022-09-22 15:10:15 -03:00
|
|
|
When ``**expression`` is used, each key in this mapping must be
|
|
|
|
a string.
|
|
|
|
Each value from the mapping is assigned to the first formal parameter
|
|
|
|
eligible for keyword assignment whose name is equal to the key.
|
|
|
|
A key need not be a Python identifier (e.g. ``"max-temp °F"`` is acceptable,
|
|
|
|
although it will not match any formal parameter that could be declared).
|
|
|
|
If there is no match to a formal parameter
|
|
|
|
the key-value pair is collected by the ``**`` parameter, if there is one,
|
|
|
|
or if there is not, a :exc:`TypeError` exception is raised.
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
Formal parameters using the syntax ``*identifier`` or ``**identifier`` cannot be
|
|
|
|
used as positional argument slots or as keyword argument names.
|
|
|
|
|
2016-06-11 22:46:50 -03:00
|
|
|
.. versionchanged:: 3.5
|
|
|
|
Function calls accept any number of ``*`` and ``**`` unpackings,
|
|
|
|
positional arguments may follow iterable unpackings (``*``),
|
|
|
|
and keyword arguments may follow dictionary unpackings (``**``).
|
|
|
|
Originally proposed by :pep:`448`.
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
A call always returns some value, possibly ``None``, unless it raises an
|
|
|
|
exception. How this value is computed depends on the type of the callable
|
|
|
|
object.
|
|
|
|
|
|
|
|
If it is---
|
|
|
|
|
|
|
|
a user-defined function:
|
|
|
|
.. index::
|
|
|
|
pair: function; call
|
|
|
|
triple: user-defined; function; call
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; user-defined function
|
|
|
|
pair: object; function
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The code block for the function is executed, passing it the argument list. The
|
|
|
|
first thing the code block will do is bind the formal parameters to the
|
|
|
|
arguments; this is described in section :ref:`function`. When the code block
|
|
|
|
executes a :keyword:`return` statement, this specifies the return value of the
|
|
|
|
function call.
|
|
|
|
|
|
|
|
a built-in function or method:
|
|
|
|
.. index::
|
|
|
|
pair: function; call
|
|
|
|
pair: built-in function; call
|
|
|
|
pair: method; call
|
|
|
|
pair: built-in method; call
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; built-in method
|
|
|
|
pair: object; built-in function
|
|
|
|
pair: object; method
|
|
|
|
pair: object; function
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The result is up to the interpreter; see :ref:`built-in-funcs` for the
|
|
|
|
descriptions of built-in functions and methods.
|
|
|
|
|
|
|
|
a class object:
|
|
|
|
.. index::
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; class
|
2007-08-15 11:28:22 -03:00
|
|
|
pair: class object; call
|
|
|
|
|
|
|
|
A new instance of that class is returned.
|
|
|
|
|
|
|
|
a class instance method:
|
|
|
|
.. index::
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; class instance
|
|
|
|
pair: object; instance
|
2007-08-15 11:28:22 -03:00
|
|
|
pair: class instance; call
|
|
|
|
|
|
|
|
The corresponding user-defined function is called, with an argument list that is
|
|
|
|
one longer than the argument list of the call: the instance becomes the first
|
|
|
|
argument.
|
|
|
|
|
|
|
|
a class instance:
|
|
|
|
.. index::
|
|
|
|
pair: instance; call
|
|
|
|
single: __call__() (object method)
|
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
The class must define a :meth:`~object.__call__` method; the effect is then the same as
|
2007-08-15 11:28:22 -03:00
|
|
|
if that method was called.
|
|
|
|
|
|
|
|
|
2023-05-04 05:44:12 -03:00
|
|
|
.. index:: pair: keyword; await
|
2015-05-21 12:50:30 -03:00
|
|
|
.. _await:
|
|
|
|
|
|
|
|
Await expression
|
|
|
|
================
|
|
|
|
|
|
|
|
Suspend the execution of :term:`coroutine` on an :term:`awaitable` object.
|
|
|
|
Can only be used inside a :term:`coroutine function`.
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2016-05-08 15:59:46 -03:00
|
|
|
await_expr: "await" `primary`
|
2015-05-21 12:50:30 -03:00
|
|
|
|
|
|
|
.. versionadded:: 3.5
|
|
|
|
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. _power:
|
|
|
|
|
|
|
|
The power operator
|
|
|
|
==================
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
pair: power; operation
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; **
|
2018-10-26 03:00:49 -03:00
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
The power operator binds more tightly than unary operators on its left; it binds
|
|
|
|
less tightly than unary operators on its right. The syntax is:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2018-07-07 17:24:46 -03:00
|
|
|
power: (`await_expr` | `primary`) ["**" `u_expr`]
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Thus, in an unparenthesized sequence of power and unary operators, the operators
|
|
|
|
are evaluated from right to left (this does not constrain the evaluation order
|
Merged revisions 57221-57391 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r57227 | facundo.batista | 2007-08-20 17:16:21 -0700 (Mon, 20 Aug 2007) | 5 lines
Catch ProtocolError exceptions and include the header information in
test output (to make it easier to debug test failures caused by
problems in the server). [GSoC - Alan McIntyre]
........
r57229 | mark.hammond | 2007-08-20 18:04:47 -0700 (Mon, 20 Aug 2007) | 5 lines
[ 1761786 ] distutils.util.get_platform() return value on 64bit Windows
As discussed on distutils-sig: Allows the generated installer name on
64bit Windows platforms to be different than the name generated for
32bit Windows platforms.
........
r57230 | mark.hammond | 2007-08-20 18:05:16 -0700 (Mon, 20 Aug 2007) | 5 lines
[ 1761786 ] distutils.util.get_platform() return value on 64bit Windows
As discussed on distutils-sig: Allows the generated installer name on
64bit Windows platforms to be different than the name generated for
32bit Windows platforms.
........
r57253 | georg.brandl | 2007-08-20 23:01:18 -0700 (Mon, 20 Aug 2007) | 2 lines
Demand version 2.5.1 since 2.5 has a bug with codecs.open context managers.
........
r57254 | georg.brandl | 2007-08-20 23:03:43 -0700 (Mon, 20 Aug 2007) | 2 lines
Revert accidental checkins from last commit.
........
r57255 | georg.brandl | 2007-08-20 23:07:08 -0700 (Mon, 20 Aug 2007) | 2 lines
Bug #1777160: mention explicitly that e.g. -1**2 is -1.
........
r57256 | georg.brandl | 2007-08-20 23:12:19 -0700 (Mon, 20 Aug 2007) | 3 lines
Bug #1777168: replace operator names "opa"... with "op1"... and mark everything up as literal,
to enhance readability.
........
r57259 | facundo.batista | 2007-08-21 09:57:18 -0700 (Tue, 21 Aug 2007) | 8 lines
Added test for behavior of operations on an unconnected SMTP object,
and tests for NOOP, RSET, and VRFY. Corrected typo in a comment for
testNonnumericPort. Added a check for constructing SMTP objects when
non-numeric ports are included in the host name. Derived a server from
SMTPServer to test various ESMTP/SMTP capabilities. Check that a
second HELO to DebuggingServer returns an error. [GSoC - Alan McIntyre]
........
r57279 | skip.montanaro | 2007-08-22 12:02:16 -0700 (Wed, 22 Aug 2007) | 2 lines
Note that BeOS is unsupported as of Python 2.6.
........
r57280 | skip.montanaro | 2007-08-22 12:05:21 -0700 (Wed, 22 Aug 2007) | 1 line
whoops - need to check in configure as well
........
r57284 | alex.martelli | 2007-08-22 14:14:17 -0700 (Wed, 22 Aug 2007) | 5 lines
Fix compile.c so that it records 0.0 and -0.0 as separate constants in a code
object's co_consts tuple; add a test to show that the previous behavior (where
these two constants were "collapsed" into one) causes serious malfunctioning.
........
r57286 | gregory.p.smith | 2007-08-22 14:32:34 -0700 (Wed, 22 Aug 2007) | 3 lines
stop leaving log.0000001 __db.00* and xxx.db turds in developer
sandboxes when bsddb3 tests are run.
........
r57301 | jeffrey.yasskin | 2007-08-22 16:14:27 -0700 (Wed, 22 Aug 2007) | 3 lines
When setup.py fails to find the necessary bits to build some modules, have it
print a slightly more informative message.
........
r57320 | brett.cannon | 2007-08-23 07:53:17 -0700 (Thu, 23 Aug 2007) | 2 lines
Make test_runpy re-entrant.
........
r57324 | georg.brandl | 2007-08-23 10:54:11 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1768121: fix wrong/missing opcode docs.
........
r57326 | georg.brandl | 2007-08-23 10:57:05 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1766421: "return code" vs. "status code".
........
r57328 | georg.brandl | 2007-08-23 11:08:06 -0700 (Thu, 23 Aug 2007) | 2 lines
Second half of #1752175: #ifdef out references to PyImport_DynLoadFiletab if HAVE_DYNAMIC_LOADING is not defined.
........
r57331 | georg.brandl | 2007-08-23 11:11:33 -0700 (Thu, 23 Aug 2007) | 2 lines
Use try-except-finally in contextlib.
........
r57343 | georg.brandl | 2007-08-23 13:35:00 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1697820: document that the old slice protocol is still used by builtin types.
........
r57345 | georg.brandl | 2007-08-23 13:40:01 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1573854: fix docs for sqlite3 cursor rowcount attr.
........
r57347 | georg.brandl | 2007-08-23 13:50:23 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1694833: fix imp.find_module() docs wrt. packages.
........
r57348 | georg.brandl | 2007-08-23 13:53:28 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1594966: fix misleading usage example
........
r57349 | georg.brandl | 2007-08-23 13:55:44 -0700 (Thu, 23 Aug 2007) | 2 lines
Clarify wording a bit.
........
r57351 | georg.brandl | 2007-08-23 14:18:44 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1752332: httplib no longer uses socket.getaddrinfo().
........
r57352 | georg.brandl | 2007-08-23 14:21:36 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1734111: document struct.Struct.size.
........
r57353 | georg.brandl | 2007-08-23 14:27:57 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1688564: document os.path.join's absolute path behavior in the docstring.
........
r57354 | georg.brandl | 2007-08-23 14:36:05 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1625381: clarify match vs search introduction.
........
r57355 | georg.brandl | 2007-08-23 14:42:54 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1758696: more info about descriptors.
........
r57357 | georg.brandl | 2007-08-23 14:55:57 -0700 (Thu, 23 Aug 2007) | 2 lines
Patch #1779550: remove redundant code in logging.
........
r57378 | gregory.p.smith | 2007-08-23 22:11:38 -0700 (Thu, 23 Aug 2007) | 2 lines
Fix bug 1725856.
........
r57382 | georg.brandl | 2007-08-23 23:10:01 -0700 (Thu, 23 Aug 2007) | 2 lines
uuid creation is now threadsafe, backport from py3k rev. 57375.
........
r57389 | georg.brandl | 2007-08-24 04:47:37 -0700 (Fri, 24 Aug 2007) | 2 lines
Bug #1765375: fix stripping of unwanted LDFLAGS.
........
r57391 | guido.van.rossum | 2007-08-24 07:53:14 -0700 (Fri, 24 Aug 2007) | 2 lines
Fix silly typo in test name.
........
2007-08-24 13:32:05 -03:00
|
|
|
for the operands): ``-1**2`` results in ``-1``.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The power operator has the same semantics as the built-in :func:`pow` function,
|
|
|
|
when called with two arguments: it yields its left argument raised to the power
|
|
|
|
of its right argument. The numeric arguments are first converted to a common
|
2007-09-07 11:15:41 -03:00
|
|
|
type, and the result is of that type.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
For int operands, the result has the same type as the operands unless the second
|
|
|
|
argument is negative; in that case, all arguments are converted to float and a
|
|
|
|
float result is delivered. For example, ``10**2`` returns ``100``, but
|
|
|
|
``10**-2`` returns ``0.01``.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Raising ``0.0`` to a negative power results in a :exc:`ZeroDivisionError`.
|
Merged revisions 59666-59679 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59666 | christian.heimes | 2008-01-02 19:28:32 +0100 (Wed, 02 Jan 2008) | 1 line
Made vs9to8 Unix compatible
........
r59669 | guido.van.rossum | 2008-01-02 20:00:46 +0100 (Wed, 02 Jan 2008) | 2 lines
Patch #1696. Don't attempt to close None in dry-run mode.
........
r59671 | jeffrey.yasskin | 2008-01-03 03:21:52 +0100 (Thu, 03 Jan 2008) | 6 lines
Backport PEP 3141 from the py3k branch to the trunk. This includes r50877 (just
the complex_pow part), r56649, r56652, r56715, r57296, r57302, r57359, r57361,
r57372, r57738, r57739, r58017, r58039, r58040, and r59390, and new
documentation. The only significant difference is that round(x) returns a float
to preserve backward-compatibility. See http://bugs.python.org/issue1689.
........
r59672 | christian.heimes | 2008-01-03 16:41:30 +0100 (Thu, 03 Jan 2008) | 1 line
Issue #1726: Remove Python/atof.c from PCBuild/pythoncore.vcproj
........
r59675 | guido.van.rossum | 2008-01-03 20:12:44 +0100 (Thu, 03 Jan 2008) | 4 lines
Issue #1700, reported by Nguyen Quan Son, fix by Fredruk Lundh:
Regular Expression inline flags not handled correctly for some unicode
characters. (Forward port from 2.5.2.)
........
r59676 | christian.heimes | 2008-01-03 21:23:15 +0100 (Thu, 03 Jan 2008) | 1 line
Added math.isinf() and math.isnan()
........
r59677 | christian.heimes | 2008-01-03 22:14:48 +0100 (Thu, 03 Jan 2008) | 1 line
Some build bots don't compile mathmodule. There is an issue with the long definition of pi and euler
........
r59678 | christian.heimes | 2008-01-03 23:16:32 +0100 (Thu, 03 Jan 2008) | 2 lines
Modified PyImport_Import and PyImport_ImportModule to always use absolute imports by calling __import__ with an explicit level of 0
Added a new API function PyImport_ImportModuleNoBlock. It solves the problem with dead locks when mixing threads and imports
........
r59679 | christian.heimes | 2008-01-03 23:32:26 +0100 (Thu, 03 Jan 2008) | 1 line
Added copysign(x, y) function to the math module
........
2008-01-03 19:01:04 -04:00
|
|
|
Raising a negative number to a fractional power results in a :class:`complex`
|
Merged revisions 59703-59773 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59704 | christian.heimes | 2008-01-04 04:15:05 +0100 (Fri, 04 Jan 2008) | 1 line
Moved include "Python.h" in front of other imports to silence a warning.
........
r59706 | raymond.hettinger | 2008-01-04 04:22:53 +0100 (Fri, 04 Jan 2008) | 10 lines
Minor fix-ups to named tuples:
* Make the _replace() method respect subclassing.
* Using property() to make _fields read-only wasn't a good idea.
It caused len(Point._fields) to fail.
* Add note to _cast() about length checking and alternative with the star-operator.
........
r59707 | jeffrey.yasskin | 2008-01-04 09:01:23 +0100 (Fri, 04 Jan 2008) | 3 lines
Make math.{floor,ceil}({int,long}) return float again for backwards
compatibility after r59671 made them return integral types.
........
r59709 | christian.heimes | 2008-01-04 14:21:07 +0100 (Fri, 04 Jan 2008) | 1 line
Bug #1713: posixpath.ismount() claims symlink to a mountpoint is a mountpoint.
........
r59712 | lars.gustaebel | 2008-01-04 15:00:33 +0100 (Fri, 04 Jan 2008) | 5 lines
Issue #1735: TarFile.extractall() now correctly sets
directory permissions and times.
(will backport to 2.5)
........
r59714 | andrew.kuchling | 2008-01-04 15:47:17 +0100 (Fri, 04 Jan 2008) | 1 line
Update links to bug/patch tracker
........
r59716 | christian.heimes | 2008-01-04 16:23:30 +0100 (Fri, 04 Jan 2008) | 1 line
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
........
r59717 | christian.heimes | 2008-01-04 16:29:00 +0100 (Fri, 04 Jan 2008) | 1 line
And here is the rest of Hirokazu Yamamoto's patch for VS6.0 support. Thanks Hiro!
........
r59719 | christian.heimes | 2008-01-04 16:34:06 +0100 (Fri, 04 Jan 2008) | 1 line
Reverted last transaction. It's the wrong branch.
........
r59721 | christian.heimes | 2008-01-04 16:48:06 +0100 (Fri, 04 Jan 2008) | 1 line
socket.ioctl is only available on Windows
........
r59722 | andrew.kuchling | 2008-01-04 19:24:41 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59723 | andrew.kuchling | 2008-01-04 19:25:05 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59725 | guido.van.rossum | 2008-01-05 01:59:59 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1725 by Mark Dickinson, fixes incorrect conversion of -1e1000
and adds errors for -0x.
........
r59726 | guido.van.rossum | 2008-01-05 02:21:57 +0100 (Sat, 05 Jan 2008) | 2 lines
Patch #1698 by Senthil: allow '@' in username when parsed by urlparse.py.
........
r59727 | raymond.hettinger | 2008-01-05 02:35:43 +0100 (Sat, 05 Jan 2008) | 1 line
Improve namedtuple's _cast() method with a docstring, new name, and error-checking.
........
r59728 | raymond.hettinger | 2008-01-05 03:17:24 +0100 (Sat, 05 Jan 2008) | 1 line
Add error-checking to namedtuple's _replace() method.
........
r59730 | fred.drake | 2008-01-05 05:38:38 +0100 (Sat, 05 Jan 2008) | 2 lines
clean up a comment
........
r59731 | jeffrey.yasskin | 2008-01-05 09:47:13 +0100 (Sat, 05 Jan 2008) | 11 lines
Continue rolling back pep-3141 changes that changed behavior from 2.5. This
round included:
* Revert round to its 2.6 behavior (half away from 0).
* Because round, floor, and ceil always return float again, it's no
longer necessary to have them delegate to __xxx___, so I've ripped
that out of their implementations and the Real ABC. This also helps
in implementing types that work in both 2.6 and 3.0: you return int
from the __xxx__ methods, and let it get enabled by the version
upgrade.
* Make pow(-1, .5) raise a ValueError again.
........
r59736 | andrew.kuchling | 2008-01-05 16:13:49 +0100 (Sat, 05 Jan 2008) | 1 line
Fix comment typo
........
r59738 | thomas.heller | 2008-01-05 18:15:44 +0100 (Sat, 05 Jan 2008) | 1 line
Add myself.
........
r59739 | georg.brandl | 2008-01-05 18:49:17 +0100 (Sat, 05 Jan 2008) | 2 lines
Fix C++-style comment.
........
r59742 | georg.brandl | 2008-01-05 20:28:16 +0100 (Sat, 05 Jan 2008) | 2 lines
Remove with_statement future imports from 2.6 docs.
........
r59743 | georg.brandl | 2008-01-05 20:29:45 +0100 (Sat, 05 Jan 2008) | 2 lines
Simplify index entries; fix #1712.
........
r59744 | georg.brandl | 2008-01-05 20:44:22 +0100 (Sat, 05 Jan 2008) | 2 lines
Doc patch #1730 from Robin Stocker; minor corrections mostly to os.rst.
........
r59749 | georg.brandl | 2008-01-05 21:29:13 +0100 (Sat, 05 Jan 2008) | 2 lines
Revert socket.rst to unix-eol.
........
r59750 | georg.brandl | 2008-01-05 21:33:46 +0100 (Sat, 05 Jan 2008) | 2 lines
Set native svn:eol-style property for text files.
........
r59752 | georg.brandl | 2008-01-05 21:46:29 +0100 (Sat, 05 Jan 2008) | 2 lines
#1719: capitalization error in "UuidCreate".
........
r59753 | georg.brandl | 2008-01-05 22:02:25 +0100 (Sat, 05 Jan 2008) | 2 lines
Repair markup.
........
r59754 | georg.brandl | 2008-01-05 22:10:50 +0100 (Sat, 05 Jan 2008) | 2 lines
Use markup.
........
r59757 | christian.heimes | 2008-01-05 22:35:52 +0100 (Sat, 05 Jan 2008) | 1 line
Final adjustments for #1601
........
r59758 | guido.van.rossum | 2008-01-05 23:19:06 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1637: fix urlparse for URLs like 'http://x.com?arg=/foo'.
Fix by John Nagle.
........
r59759 | guido.van.rossum | 2008-01-05 23:20:01 +0100 (Sat, 05 Jan 2008) | 2 lines
Add John Nagle (of issue #1637).
........
r59765 | raymond.hettinger | 2008-01-06 10:02:24 +0100 (Sun, 06 Jan 2008) | 1 line
Small code simplification. Forgot that classmethods can be called from intances.
........
r59766 | martin.v.loewis | 2008-01-06 11:09:48 +0100 (Sun, 06 Jan 2008) | 2 lines
Use vcbuild for VS 2009.
........
r59767 | martin.v.loewis | 2008-01-06 12:03:43 +0100 (Sun, 06 Jan 2008) | 2 lines
Package using VS 2008.
........
r59768 | martin.v.loewis | 2008-01-06 12:13:16 +0100 (Sun, 06 Jan 2008) | 2 lines
Don't try to package msvcr90 for the moment.
........
r59769 | georg.brandl | 2008-01-06 15:17:36 +0100 (Sun, 06 Jan 2008) | 4 lines
#1696393: don't check for '.' and '..' in ntpath.walk since
they aren't returned from os.listdir anymore.
Reported by Michael Haggerty.
........
r59770 | georg.brandl | 2008-01-06 15:27:15 +0100 (Sun, 06 Jan 2008) | 3 lines
#1742: don't raise exception on os.path.relpath("a", "a"), but return os.curdir.
Reported by Jesse Towner.
........
r59771 | georg.brandl | 2008-01-06 15:33:52 +0100 (Sun, 06 Jan 2008) | 2 lines
#1591: Clarify docstring of Popen3.
........
r59772 | georg.brandl | 2008-01-06 16:30:34 +0100 (Sun, 06 Jan 2008) | 2 lines
#1680: fix context manager example function name.
........
r59773 | georg.brandl | 2008-01-06 16:34:57 +0100 (Sun, 06 Jan 2008) | 2 lines
#1755097: document default values for [].sort() and sorted().
........
2008-01-06 12:59:19 -04:00
|
|
|
number. (In earlier versions it raised a :exc:`ValueError`.)
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
This operation can be customized using the special :meth:`~object.__pow__` method.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. _unary:
|
|
|
|
|
2009-02-20 00:02:38 -04:00
|
|
|
Unary arithmetic and bitwise operations
|
|
|
|
=======================================
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index::
|
|
|
|
triple: unary; arithmetic; operation
|
Merged revisions 59703-59773 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59704 | christian.heimes | 2008-01-04 04:15:05 +0100 (Fri, 04 Jan 2008) | 1 line
Moved include "Python.h" in front of other imports to silence a warning.
........
r59706 | raymond.hettinger | 2008-01-04 04:22:53 +0100 (Fri, 04 Jan 2008) | 10 lines
Minor fix-ups to named tuples:
* Make the _replace() method respect subclassing.
* Using property() to make _fields read-only wasn't a good idea.
It caused len(Point._fields) to fail.
* Add note to _cast() about length checking and alternative with the star-operator.
........
r59707 | jeffrey.yasskin | 2008-01-04 09:01:23 +0100 (Fri, 04 Jan 2008) | 3 lines
Make math.{floor,ceil}({int,long}) return float again for backwards
compatibility after r59671 made them return integral types.
........
r59709 | christian.heimes | 2008-01-04 14:21:07 +0100 (Fri, 04 Jan 2008) | 1 line
Bug #1713: posixpath.ismount() claims symlink to a mountpoint is a mountpoint.
........
r59712 | lars.gustaebel | 2008-01-04 15:00:33 +0100 (Fri, 04 Jan 2008) | 5 lines
Issue #1735: TarFile.extractall() now correctly sets
directory permissions and times.
(will backport to 2.5)
........
r59714 | andrew.kuchling | 2008-01-04 15:47:17 +0100 (Fri, 04 Jan 2008) | 1 line
Update links to bug/patch tracker
........
r59716 | christian.heimes | 2008-01-04 16:23:30 +0100 (Fri, 04 Jan 2008) | 1 line
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
........
r59717 | christian.heimes | 2008-01-04 16:29:00 +0100 (Fri, 04 Jan 2008) | 1 line
And here is the rest of Hirokazu Yamamoto's patch for VS6.0 support. Thanks Hiro!
........
r59719 | christian.heimes | 2008-01-04 16:34:06 +0100 (Fri, 04 Jan 2008) | 1 line
Reverted last transaction. It's the wrong branch.
........
r59721 | christian.heimes | 2008-01-04 16:48:06 +0100 (Fri, 04 Jan 2008) | 1 line
socket.ioctl is only available on Windows
........
r59722 | andrew.kuchling | 2008-01-04 19:24:41 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59723 | andrew.kuchling | 2008-01-04 19:25:05 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59725 | guido.van.rossum | 2008-01-05 01:59:59 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1725 by Mark Dickinson, fixes incorrect conversion of -1e1000
and adds errors for -0x.
........
r59726 | guido.van.rossum | 2008-01-05 02:21:57 +0100 (Sat, 05 Jan 2008) | 2 lines
Patch #1698 by Senthil: allow '@' in username when parsed by urlparse.py.
........
r59727 | raymond.hettinger | 2008-01-05 02:35:43 +0100 (Sat, 05 Jan 2008) | 1 line
Improve namedtuple's _cast() method with a docstring, new name, and error-checking.
........
r59728 | raymond.hettinger | 2008-01-05 03:17:24 +0100 (Sat, 05 Jan 2008) | 1 line
Add error-checking to namedtuple's _replace() method.
........
r59730 | fred.drake | 2008-01-05 05:38:38 +0100 (Sat, 05 Jan 2008) | 2 lines
clean up a comment
........
r59731 | jeffrey.yasskin | 2008-01-05 09:47:13 +0100 (Sat, 05 Jan 2008) | 11 lines
Continue rolling back pep-3141 changes that changed behavior from 2.5. This
round included:
* Revert round to its 2.6 behavior (half away from 0).
* Because round, floor, and ceil always return float again, it's no
longer necessary to have them delegate to __xxx___, so I've ripped
that out of their implementations and the Real ABC. This also helps
in implementing types that work in both 2.6 and 3.0: you return int
from the __xxx__ methods, and let it get enabled by the version
upgrade.
* Make pow(-1, .5) raise a ValueError again.
........
r59736 | andrew.kuchling | 2008-01-05 16:13:49 +0100 (Sat, 05 Jan 2008) | 1 line
Fix comment typo
........
r59738 | thomas.heller | 2008-01-05 18:15:44 +0100 (Sat, 05 Jan 2008) | 1 line
Add myself.
........
r59739 | georg.brandl | 2008-01-05 18:49:17 +0100 (Sat, 05 Jan 2008) | 2 lines
Fix C++-style comment.
........
r59742 | georg.brandl | 2008-01-05 20:28:16 +0100 (Sat, 05 Jan 2008) | 2 lines
Remove with_statement future imports from 2.6 docs.
........
r59743 | georg.brandl | 2008-01-05 20:29:45 +0100 (Sat, 05 Jan 2008) | 2 lines
Simplify index entries; fix #1712.
........
r59744 | georg.brandl | 2008-01-05 20:44:22 +0100 (Sat, 05 Jan 2008) | 2 lines
Doc patch #1730 from Robin Stocker; minor corrections mostly to os.rst.
........
r59749 | georg.brandl | 2008-01-05 21:29:13 +0100 (Sat, 05 Jan 2008) | 2 lines
Revert socket.rst to unix-eol.
........
r59750 | georg.brandl | 2008-01-05 21:33:46 +0100 (Sat, 05 Jan 2008) | 2 lines
Set native svn:eol-style property for text files.
........
r59752 | georg.brandl | 2008-01-05 21:46:29 +0100 (Sat, 05 Jan 2008) | 2 lines
#1719: capitalization error in "UuidCreate".
........
r59753 | georg.brandl | 2008-01-05 22:02:25 +0100 (Sat, 05 Jan 2008) | 2 lines
Repair markup.
........
r59754 | georg.brandl | 2008-01-05 22:10:50 +0100 (Sat, 05 Jan 2008) | 2 lines
Use markup.
........
r59757 | christian.heimes | 2008-01-05 22:35:52 +0100 (Sat, 05 Jan 2008) | 1 line
Final adjustments for #1601
........
r59758 | guido.van.rossum | 2008-01-05 23:19:06 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1637: fix urlparse for URLs like 'http://x.com?arg=/foo'.
Fix by John Nagle.
........
r59759 | guido.van.rossum | 2008-01-05 23:20:01 +0100 (Sat, 05 Jan 2008) | 2 lines
Add John Nagle (of issue #1637).
........
r59765 | raymond.hettinger | 2008-01-06 10:02:24 +0100 (Sun, 06 Jan 2008) | 1 line
Small code simplification. Forgot that classmethods can be called from intances.
........
r59766 | martin.v.loewis | 2008-01-06 11:09:48 +0100 (Sun, 06 Jan 2008) | 2 lines
Use vcbuild for VS 2009.
........
r59767 | martin.v.loewis | 2008-01-06 12:03:43 +0100 (Sun, 06 Jan 2008) | 2 lines
Package using VS 2008.
........
r59768 | martin.v.loewis | 2008-01-06 12:13:16 +0100 (Sun, 06 Jan 2008) | 2 lines
Don't try to package msvcr90 for the moment.
........
r59769 | georg.brandl | 2008-01-06 15:17:36 +0100 (Sun, 06 Jan 2008) | 4 lines
#1696393: don't check for '.' and '..' in ntpath.walk since
they aren't returned from os.listdir anymore.
Reported by Michael Haggerty.
........
r59770 | georg.brandl | 2008-01-06 15:27:15 +0100 (Sun, 06 Jan 2008) | 3 lines
#1742: don't raise exception on os.path.relpath("a", "a"), but return os.curdir.
Reported by Jesse Towner.
........
r59771 | georg.brandl | 2008-01-06 15:33:52 +0100 (Sun, 06 Jan 2008) | 2 lines
#1591: Clarify docstring of Popen3.
........
r59772 | georg.brandl | 2008-01-06 16:30:34 +0100 (Sun, 06 Jan 2008) | 2 lines
#1680: fix context manager example function name.
........
r59773 | georg.brandl | 2008-01-06 16:34:57 +0100 (Sun, 06 Jan 2008) | 2 lines
#1755097: document default values for [].sort() and sorted().
........
2008-01-06 12:59:19 -04:00
|
|
|
triple: unary; bitwise; operation
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2009-02-20 00:02:38 -04:00
|
|
|
All unary arithmetic and bitwise operations have the same priority:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-08-15 11:28:22 -03:00
|
|
|
u_expr: `power` | "-" `u_expr` | "+" `u_expr` | "~" `u_expr`
|
|
|
|
|
|
|
|
.. index::
|
|
|
|
single: negation
|
|
|
|
single: minus
|
2018-10-28 08:41:26 -03:00
|
|
|
single: operator; - (minus)
|
|
|
|
single: - (minus); unary operator
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2021-07-30 13:52:44 -03:00
|
|
|
The unary ``-`` (minus) operator yields the negation of its numeric argument; the
|
2024-01-22 12:21:14 -04:00
|
|
|
operation can be overridden with the :meth:`~object.__neg__` special method.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: plus
|
2018-10-28 08:41:26 -03:00
|
|
|
single: operator; + (plus)
|
|
|
|
single: + (plus); unary operator
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2021-07-30 13:52:44 -03:00
|
|
|
The unary ``+`` (plus) operator yields its numeric argument unchanged; the
|
2024-01-22 12:21:14 -04:00
|
|
|
operation can be overridden with the :meth:`~object.__pos__` special method.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: inversion
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; ~ (tilde)
|
Merged revisions 59703-59773 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59704 | christian.heimes | 2008-01-04 04:15:05 +0100 (Fri, 04 Jan 2008) | 1 line
Moved include "Python.h" in front of other imports to silence a warning.
........
r59706 | raymond.hettinger | 2008-01-04 04:22:53 +0100 (Fri, 04 Jan 2008) | 10 lines
Minor fix-ups to named tuples:
* Make the _replace() method respect subclassing.
* Using property() to make _fields read-only wasn't a good idea.
It caused len(Point._fields) to fail.
* Add note to _cast() about length checking and alternative with the star-operator.
........
r59707 | jeffrey.yasskin | 2008-01-04 09:01:23 +0100 (Fri, 04 Jan 2008) | 3 lines
Make math.{floor,ceil}({int,long}) return float again for backwards
compatibility after r59671 made them return integral types.
........
r59709 | christian.heimes | 2008-01-04 14:21:07 +0100 (Fri, 04 Jan 2008) | 1 line
Bug #1713: posixpath.ismount() claims symlink to a mountpoint is a mountpoint.
........
r59712 | lars.gustaebel | 2008-01-04 15:00:33 +0100 (Fri, 04 Jan 2008) | 5 lines
Issue #1735: TarFile.extractall() now correctly sets
directory permissions and times.
(will backport to 2.5)
........
r59714 | andrew.kuchling | 2008-01-04 15:47:17 +0100 (Fri, 04 Jan 2008) | 1 line
Update links to bug/patch tracker
........
r59716 | christian.heimes | 2008-01-04 16:23:30 +0100 (Fri, 04 Jan 2008) | 1 line
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
........
r59717 | christian.heimes | 2008-01-04 16:29:00 +0100 (Fri, 04 Jan 2008) | 1 line
And here is the rest of Hirokazu Yamamoto's patch for VS6.0 support. Thanks Hiro!
........
r59719 | christian.heimes | 2008-01-04 16:34:06 +0100 (Fri, 04 Jan 2008) | 1 line
Reverted last transaction. It's the wrong branch.
........
r59721 | christian.heimes | 2008-01-04 16:48:06 +0100 (Fri, 04 Jan 2008) | 1 line
socket.ioctl is only available on Windows
........
r59722 | andrew.kuchling | 2008-01-04 19:24:41 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59723 | andrew.kuchling | 2008-01-04 19:25:05 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59725 | guido.van.rossum | 2008-01-05 01:59:59 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1725 by Mark Dickinson, fixes incorrect conversion of -1e1000
and adds errors for -0x.
........
r59726 | guido.van.rossum | 2008-01-05 02:21:57 +0100 (Sat, 05 Jan 2008) | 2 lines
Patch #1698 by Senthil: allow '@' in username when parsed by urlparse.py.
........
r59727 | raymond.hettinger | 2008-01-05 02:35:43 +0100 (Sat, 05 Jan 2008) | 1 line
Improve namedtuple's _cast() method with a docstring, new name, and error-checking.
........
r59728 | raymond.hettinger | 2008-01-05 03:17:24 +0100 (Sat, 05 Jan 2008) | 1 line
Add error-checking to namedtuple's _replace() method.
........
r59730 | fred.drake | 2008-01-05 05:38:38 +0100 (Sat, 05 Jan 2008) | 2 lines
clean up a comment
........
r59731 | jeffrey.yasskin | 2008-01-05 09:47:13 +0100 (Sat, 05 Jan 2008) | 11 lines
Continue rolling back pep-3141 changes that changed behavior from 2.5. This
round included:
* Revert round to its 2.6 behavior (half away from 0).
* Because round, floor, and ceil always return float again, it's no
longer necessary to have them delegate to __xxx___, so I've ripped
that out of their implementations and the Real ABC. This also helps
in implementing types that work in both 2.6 and 3.0: you return int
from the __xxx__ methods, and let it get enabled by the version
upgrade.
* Make pow(-1, .5) raise a ValueError again.
........
r59736 | andrew.kuchling | 2008-01-05 16:13:49 +0100 (Sat, 05 Jan 2008) | 1 line
Fix comment typo
........
r59738 | thomas.heller | 2008-01-05 18:15:44 +0100 (Sat, 05 Jan 2008) | 1 line
Add myself.
........
r59739 | georg.brandl | 2008-01-05 18:49:17 +0100 (Sat, 05 Jan 2008) | 2 lines
Fix C++-style comment.
........
r59742 | georg.brandl | 2008-01-05 20:28:16 +0100 (Sat, 05 Jan 2008) | 2 lines
Remove with_statement future imports from 2.6 docs.
........
r59743 | georg.brandl | 2008-01-05 20:29:45 +0100 (Sat, 05 Jan 2008) | 2 lines
Simplify index entries; fix #1712.
........
r59744 | georg.brandl | 2008-01-05 20:44:22 +0100 (Sat, 05 Jan 2008) | 2 lines
Doc patch #1730 from Robin Stocker; minor corrections mostly to os.rst.
........
r59749 | georg.brandl | 2008-01-05 21:29:13 +0100 (Sat, 05 Jan 2008) | 2 lines
Revert socket.rst to unix-eol.
........
r59750 | georg.brandl | 2008-01-05 21:33:46 +0100 (Sat, 05 Jan 2008) | 2 lines
Set native svn:eol-style property for text files.
........
r59752 | georg.brandl | 2008-01-05 21:46:29 +0100 (Sat, 05 Jan 2008) | 2 lines
#1719: capitalization error in "UuidCreate".
........
r59753 | georg.brandl | 2008-01-05 22:02:25 +0100 (Sat, 05 Jan 2008) | 2 lines
Repair markup.
........
r59754 | georg.brandl | 2008-01-05 22:10:50 +0100 (Sat, 05 Jan 2008) | 2 lines
Use markup.
........
r59757 | christian.heimes | 2008-01-05 22:35:52 +0100 (Sat, 05 Jan 2008) | 1 line
Final adjustments for #1601
........
r59758 | guido.van.rossum | 2008-01-05 23:19:06 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1637: fix urlparse for URLs like 'http://x.com?arg=/foo'.
Fix by John Nagle.
........
r59759 | guido.van.rossum | 2008-01-05 23:20:01 +0100 (Sat, 05 Jan 2008) | 2 lines
Add John Nagle (of issue #1637).
........
r59765 | raymond.hettinger | 2008-01-06 10:02:24 +0100 (Sun, 06 Jan 2008) | 1 line
Small code simplification. Forgot that classmethods can be called from intances.
........
r59766 | martin.v.loewis | 2008-01-06 11:09:48 +0100 (Sun, 06 Jan 2008) | 2 lines
Use vcbuild for VS 2009.
........
r59767 | martin.v.loewis | 2008-01-06 12:03:43 +0100 (Sun, 06 Jan 2008) | 2 lines
Package using VS 2008.
........
r59768 | martin.v.loewis | 2008-01-06 12:13:16 +0100 (Sun, 06 Jan 2008) | 2 lines
Don't try to package msvcr90 for the moment.
........
r59769 | georg.brandl | 2008-01-06 15:17:36 +0100 (Sun, 06 Jan 2008) | 4 lines
#1696393: don't check for '.' and '..' in ntpath.walk since
they aren't returned from os.listdir anymore.
Reported by Michael Haggerty.
........
r59770 | georg.brandl | 2008-01-06 15:27:15 +0100 (Sun, 06 Jan 2008) | 3 lines
#1742: don't raise exception on os.path.relpath("a", "a"), but return os.curdir.
Reported by Jesse Towner.
........
r59771 | georg.brandl | 2008-01-06 15:33:52 +0100 (Sun, 06 Jan 2008) | 2 lines
#1591: Clarify docstring of Popen3.
........
r59772 | georg.brandl | 2008-01-06 16:30:34 +0100 (Sun, 06 Jan 2008) | 2 lines
#1680: fix context manager example function name.
........
r59773 | georg.brandl | 2008-01-06 16:34:57 +0100 (Sun, 06 Jan 2008) | 2 lines
#1755097: document default values for [].sort() and sorted().
........
2008-01-06 12:59:19 -04:00
|
|
|
|
2008-05-11 11:30:18 -03:00
|
|
|
The unary ``~`` (invert) operator yields the bitwise inversion of its integer
|
|
|
|
argument. The bitwise inversion of ``x`` is defined as ``-(x+1)``. It only
|
2021-07-30 13:52:44 -03:00
|
|
|
applies to integral numbers or to custom objects that override the
|
2024-01-22 12:21:14 -04:00
|
|
|
:meth:`~object.__invert__` special method.
|
2021-07-30 13:52:44 -03:00
|
|
|
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2023-05-04 07:30:24 -03:00
|
|
|
.. index:: pair: exception; TypeError
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
In all three cases, if the argument does not have the proper type, a
|
|
|
|
:exc:`TypeError` exception is raised.
|
|
|
|
|
|
|
|
|
|
|
|
.. _binary:
|
|
|
|
|
|
|
|
Binary arithmetic operations
|
|
|
|
============================
|
|
|
|
|
|
|
|
.. index:: triple: binary; arithmetic; operation
|
|
|
|
|
|
|
|
The binary arithmetic operations have the conventional priority levels. Note
|
|
|
|
that some of these operations also apply to certain non-numeric types. Apart
|
|
|
|
from the power operator, there are only two levels, one for multiplicative
|
|
|
|
operators and one for additive operators:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2014-04-10 00:55:56 -03:00
|
|
|
m_expr: `u_expr` | `m_expr` "*" `u_expr` | `m_expr` "@" `m_expr` |
|
2018-07-07 17:24:46 -03:00
|
|
|
: `m_expr` "//" `u_expr` | `m_expr` "/" `u_expr` |
|
2014-04-10 00:55:56 -03:00
|
|
|
: `m_expr` "%" `u_expr`
|
2007-08-15 11:28:22 -03:00
|
|
|
a_expr: `m_expr` | `a_expr` "+" `m_expr` | `a_expr` "-" `m_expr`
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: multiplication
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; * (asterisk)
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The ``*`` (multiplication) operator yields the product of its arguments. The
|
2007-09-07 11:15:41 -03:00
|
|
|
arguments must either both be numbers, or one argument must be an integer and
|
|
|
|
the other must be a sequence. In the former case, the numbers are converted to a
|
|
|
|
common type and then multiplied together. In the latter case, sequence
|
|
|
|
repetition is performed; a negative repetition factor yields an empty sequence.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
This operation can be customized using the special :meth:`~object.__mul__` and
|
|
|
|
:meth:`~object.__rmul__` methods.
|
2021-07-30 13:52:44 -03:00
|
|
|
|
2018-06-15 16:23:00 -03:00
|
|
|
.. index::
|
|
|
|
single: matrix multiplication
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; @ (at)
|
2014-04-10 00:55:56 -03:00
|
|
|
|
|
|
|
The ``@`` (at) operator is intended to be used for matrix multiplication. No
|
|
|
|
builtin Python types implement this operator.
|
|
|
|
|
|
|
|
.. versionadded:: 3.5
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. index::
|
2023-05-04 07:30:24 -03:00
|
|
|
pair: exception; ZeroDivisionError
|
2007-08-15 11:28:22 -03:00
|
|
|
single: division
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; / (slash)
|
|
|
|
pair: operator; //
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The ``/`` (division) and ``//`` (floor division) operators yield the quotient of
|
|
|
|
their arguments. The numeric arguments are first converted to a common type.
|
2013-10-08 16:47:18 -03:00
|
|
|
Division of integers yields a float, while floor division of integers results in an
|
2007-09-07 11:15:41 -03:00
|
|
|
integer; the result is that of mathematical division with the 'floor' function
|
|
|
|
applied to the result. Division by zero raises the :exc:`ZeroDivisionError`
|
|
|
|
exception.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
This operation can be customized using the special :meth:`~object.__truediv__` and
|
|
|
|
:meth:`~object.__floordiv__` methods.
|
2021-07-30 13:52:44 -03:00
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: modulo
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; % (percent)
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The ``%`` (modulo) operator yields the remainder from the division of the first
|
|
|
|
argument by the second. The numeric arguments are first converted to a common
|
|
|
|
type. A zero right argument raises the :exc:`ZeroDivisionError` exception. The
|
|
|
|
arguments may be floating point numbers, e.g., ``3.14%0.7`` equals ``0.34``
|
|
|
|
(since ``3.14`` equals ``4*0.7 + 0.34``.) The modulo operator always yields a
|
|
|
|
result with the same sign as its second operand (or zero); the absolute value of
|
|
|
|
the result is strictly smaller than the absolute value of the second operand
|
|
|
|
[#]_.
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
The floor division and modulo operators are connected by the following
|
|
|
|
identity: ``x == (x//y)*y + (x%y)``. Floor division and modulo are also
|
|
|
|
connected with the built-in function :func:`divmod`: ``divmod(x, y) == (x//y,
|
|
|
|
x%y)``. [#]_.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
In addition to performing the modulo operation on numbers, the ``%`` operator is
|
2007-09-07 11:15:41 -03:00
|
|
|
also overloaded by string objects to perform old-style string formatting (also
|
|
|
|
known as interpolation). The syntax for string formatting is described in the
|
2007-08-31 06:22:56 -03:00
|
|
|
Python Library Reference, section :ref:`old-string-formatting`.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
The *modulo* operation can be customized using the special :meth:`~object.__mod__` method.
|
2021-07-30 13:52:44 -03:00
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
The floor division operator, the modulo operator, and the :func:`divmod`
|
2007-09-07 11:15:41 -03:00
|
|
|
function are not defined for complex numbers. Instead, convert to a floating
|
|
|
|
point number using the :func:`abs` function if appropriate.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: addition
|
2018-10-28 08:41:26 -03:00
|
|
|
single: operator; + (plus)
|
|
|
|
single: + (plus); binary operator
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
The ``+`` (addition) operator yields the sum of its arguments. The arguments
|
2014-05-27 02:20:37 -03:00
|
|
|
must either both be numbers or both be sequences of the same type. In the
|
|
|
|
former case, the numbers are converted to a common type and then added together.
|
|
|
|
In the latter case, the sequences are concatenated.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
This operation can be customized using the special :meth:`~object.__add__` and
|
|
|
|
:meth:`~object.__radd__` methods.
|
2021-07-30 13:52:44 -03:00
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: subtraction
|
2018-10-28 08:41:26 -03:00
|
|
|
single: operator; - (minus)
|
|
|
|
single: - (minus); binary operator
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The ``-`` (subtraction) operator yields the difference of its arguments. The
|
|
|
|
numeric arguments are first converted to a common type.
|
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
This operation can be customized using the special :meth:`~object.__sub__` method.
|
2021-07-30 13:52:44 -03:00
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. _shifting:
|
|
|
|
|
|
|
|
Shifting operations
|
|
|
|
===================
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
pair: shifting; operation
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; <<
|
|
|
|
pair: operator; >>
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The shifting operations have lower priority than the arithmetic operations:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2018-07-07 17:24:46 -03:00
|
|
|
shift_expr: `a_expr` | `shift_expr` ("<<" | ">>") `a_expr`
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
These operators accept integers as arguments. They shift the first argument to
|
|
|
|
the left or right by the number of bits given by the second argument.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
This operation can be customized using the special :meth:`~object.__lshift__` and
|
|
|
|
:meth:`~object.__rshift__` methods.
|
2021-07-30 13:52:44 -03:00
|
|
|
|
2023-05-04 07:30:24 -03:00
|
|
|
.. index:: pair: exception; ValueError
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2013-10-08 16:47:18 -03:00
|
|
|
A right shift by *n* bits is defined as floor division by ``pow(2,n)``. A left
|
|
|
|
shift by *n* bits is defined as multiplication with ``pow(2,n)``.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. _bitwise:
|
|
|
|
|
Merged revisions 59703-59773 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59704 | christian.heimes | 2008-01-04 04:15:05 +0100 (Fri, 04 Jan 2008) | 1 line
Moved include "Python.h" in front of other imports to silence a warning.
........
r59706 | raymond.hettinger | 2008-01-04 04:22:53 +0100 (Fri, 04 Jan 2008) | 10 lines
Minor fix-ups to named tuples:
* Make the _replace() method respect subclassing.
* Using property() to make _fields read-only wasn't a good idea.
It caused len(Point._fields) to fail.
* Add note to _cast() about length checking and alternative with the star-operator.
........
r59707 | jeffrey.yasskin | 2008-01-04 09:01:23 +0100 (Fri, 04 Jan 2008) | 3 lines
Make math.{floor,ceil}({int,long}) return float again for backwards
compatibility after r59671 made them return integral types.
........
r59709 | christian.heimes | 2008-01-04 14:21:07 +0100 (Fri, 04 Jan 2008) | 1 line
Bug #1713: posixpath.ismount() claims symlink to a mountpoint is a mountpoint.
........
r59712 | lars.gustaebel | 2008-01-04 15:00:33 +0100 (Fri, 04 Jan 2008) | 5 lines
Issue #1735: TarFile.extractall() now correctly sets
directory permissions and times.
(will backport to 2.5)
........
r59714 | andrew.kuchling | 2008-01-04 15:47:17 +0100 (Fri, 04 Jan 2008) | 1 line
Update links to bug/patch tracker
........
r59716 | christian.heimes | 2008-01-04 16:23:30 +0100 (Fri, 04 Jan 2008) | 1 line
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
........
r59717 | christian.heimes | 2008-01-04 16:29:00 +0100 (Fri, 04 Jan 2008) | 1 line
And here is the rest of Hirokazu Yamamoto's patch for VS6.0 support. Thanks Hiro!
........
r59719 | christian.heimes | 2008-01-04 16:34:06 +0100 (Fri, 04 Jan 2008) | 1 line
Reverted last transaction. It's the wrong branch.
........
r59721 | christian.heimes | 2008-01-04 16:48:06 +0100 (Fri, 04 Jan 2008) | 1 line
socket.ioctl is only available on Windows
........
r59722 | andrew.kuchling | 2008-01-04 19:24:41 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59723 | andrew.kuchling | 2008-01-04 19:25:05 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59725 | guido.van.rossum | 2008-01-05 01:59:59 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1725 by Mark Dickinson, fixes incorrect conversion of -1e1000
and adds errors for -0x.
........
r59726 | guido.van.rossum | 2008-01-05 02:21:57 +0100 (Sat, 05 Jan 2008) | 2 lines
Patch #1698 by Senthil: allow '@' in username when parsed by urlparse.py.
........
r59727 | raymond.hettinger | 2008-01-05 02:35:43 +0100 (Sat, 05 Jan 2008) | 1 line
Improve namedtuple's _cast() method with a docstring, new name, and error-checking.
........
r59728 | raymond.hettinger | 2008-01-05 03:17:24 +0100 (Sat, 05 Jan 2008) | 1 line
Add error-checking to namedtuple's _replace() method.
........
r59730 | fred.drake | 2008-01-05 05:38:38 +0100 (Sat, 05 Jan 2008) | 2 lines
clean up a comment
........
r59731 | jeffrey.yasskin | 2008-01-05 09:47:13 +0100 (Sat, 05 Jan 2008) | 11 lines
Continue rolling back pep-3141 changes that changed behavior from 2.5. This
round included:
* Revert round to its 2.6 behavior (half away from 0).
* Because round, floor, and ceil always return float again, it's no
longer necessary to have them delegate to __xxx___, so I've ripped
that out of their implementations and the Real ABC. This also helps
in implementing types that work in both 2.6 and 3.0: you return int
from the __xxx__ methods, and let it get enabled by the version
upgrade.
* Make pow(-1, .5) raise a ValueError again.
........
r59736 | andrew.kuchling | 2008-01-05 16:13:49 +0100 (Sat, 05 Jan 2008) | 1 line
Fix comment typo
........
r59738 | thomas.heller | 2008-01-05 18:15:44 +0100 (Sat, 05 Jan 2008) | 1 line
Add myself.
........
r59739 | georg.brandl | 2008-01-05 18:49:17 +0100 (Sat, 05 Jan 2008) | 2 lines
Fix C++-style comment.
........
r59742 | georg.brandl | 2008-01-05 20:28:16 +0100 (Sat, 05 Jan 2008) | 2 lines
Remove with_statement future imports from 2.6 docs.
........
r59743 | georg.brandl | 2008-01-05 20:29:45 +0100 (Sat, 05 Jan 2008) | 2 lines
Simplify index entries; fix #1712.
........
r59744 | georg.brandl | 2008-01-05 20:44:22 +0100 (Sat, 05 Jan 2008) | 2 lines
Doc patch #1730 from Robin Stocker; minor corrections mostly to os.rst.
........
r59749 | georg.brandl | 2008-01-05 21:29:13 +0100 (Sat, 05 Jan 2008) | 2 lines
Revert socket.rst to unix-eol.
........
r59750 | georg.brandl | 2008-01-05 21:33:46 +0100 (Sat, 05 Jan 2008) | 2 lines
Set native svn:eol-style property for text files.
........
r59752 | georg.brandl | 2008-01-05 21:46:29 +0100 (Sat, 05 Jan 2008) | 2 lines
#1719: capitalization error in "UuidCreate".
........
r59753 | georg.brandl | 2008-01-05 22:02:25 +0100 (Sat, 05 Jan 2008) | 2 lines
Repair markup.
........
r59754 | georg.brandl | 2008-01-05 22:10:50 +0100 (Sat, 05 Jan 2008) | 2 lines
Use markup.
........
r59757 | christian.heimes | 2008-01-05 22:35:52 +0100 (Sat, 05 Jan 2008) | 1 line
Final adjustments for #1601
........
r59758 | guido.van.rossum | 2008-01-05 23:19:06 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1637: fix urlparse for URLs like 'http://x.com?arg=/foo'.
Fix by John Nagle.
........
r59759 | guido.van.rossum | 2008-01-05 23:20:01 +0100 (Sat, 05 Jan 2008) | 2 lines
Add John Nagle (of issue #1637).
........
r59765 | raymond.hettinger | 2008-01-06 10:02:24 +0100 (Sun, 06 Jan 2008) | 1 line
Small code simplification. Forgot that classmethods can be called from intances.
........
r59766 | martin.v.loewis | 2008-01-06 11:09:48 +0100 (Sun, 06 Jan 2008) | 2 lines
Use vcbuild for VS 2009.
........
r59767 | martin.v.loewis | 2008-01-06 12:03:43 +0100 (Sun, 06 Jan 2008) | 2 lines
Package using VS 2008.
........
r59768 | martin.v.loewis | 2008-01-06 12:13:16 +0100 (Sun, 06 Jan 2008) | 2 lines
Don't try to package msvcr90 for the moment.
........
r59769 | georg.brandl | 2008-01-06 15:17:36 +0100 (Sun, 06 Jan 2008) | 4 lines
#1696393: don't check for '.' and '..' in ntpath.walk since
they aren't returned from os.listdir anymore.
Reported by Michael Haggerty.
........
r59770 | georg.brandl | 2008-01-06 15:27:15 +0100 (Sun, 06 Jan 2008) | 3 lines
#1742: don't raise exception on os.path.relpath("a", "a"), but return os.curdir.
Reported by Jesse Towner.
........
r59771 | georg.brandl | 2008-01-06 15:33:52 +0100 (Sun, 06 Jan 2008) | 2 lines
#1591: Clarify docstring of Popen3.
........
r59772 | georg.brandl | 2008-01-06 16:30:34 +0100 (Sun, 06 Jan 2008) | 2 lines
#1680: fix context manager example function name.
........
r59773 | georg.brandl | 2008-01-06 16:34:57 +0100 (Sun, 06 Jan 2008) | 2 lines
#1755097: document default values for [].sort() and sorted().
........
2008-01-06 12:59:19 -04:00
|
|
|
Binary bitwise operations
|
|
|
|
=========================
|
2007-08-15 11:28:22 -03:00
|
|
|
|
Merged revisions 59703-59773 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59704 | christian.heimes | 2008-01-04 04:15:05 +0100 (Fri, 04 Jan 2008) | 1 line
Moved include "Python.h" in front of other imports to silence a warning.
........
r59706 | raymond.hettinger | 2008-01-04 04:22:53 +0100 (Fri, 04 Jan 2008) | 10 lines
Minor fix-ups to named tuples:
* Make the _replace() method respect subclassing.
* Using property() to make _fields read-only wasn't a good idea.
It caused len(Point._fields) to fail.
* Add note to _cast() about length checking and alternative with the star-operator.
........
r59707 | jeffrey.yasskin | 2008-01-04 09:01:23 +0100 (Fri, 04 Jan 2008) | 3 lines
Make math.{floor,ceil}({int,long}) return float again for backwards
compatibility after r59671 made them return integral types.
........
r59709 | christian.heimes | 2008-01-04 14:21:07 +0100 (Fri, 04 Jan 2008) | 1 line
Bug #1713: posixpath.ismount() claims symlink to a mountpoint is a mountpoint.
........
r59712 | lars.gustaebel | 2008-01-04 15:00:33 +0100 (Fri, 04 Jan 2008) | 5 lines
Issue #1735: TarFile.extractall() now correctly sets
directory permissions and times.
(will backport to 2.5)
........
r59714 | andrew.kuchling | 2008-01-04 15:47:17 +0100 (Fri, 04 Jan 2008) | 1 line
Update links to bug/patch tracker
........
r59716 | christian.heimes | 2008-01-04 16:23:30 +0100 (Fri, 04 Jan 2008) | 1 line
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
........
r59717 | christian.heimes | 2008-01-04 16:29:00 +0100 (Fri, 04 Jan 2008) | 1 line
And here is the rest of Hirokazu Yamamoto's patch for VS6.0 support. Thanks Hiro!
........
r59719 | christian.heimes | 2008-01-04 16:34:06 +0100 (Fri, 04 Jan 2008) | 1 line
Reverted last transaction. It's the wrong branch.
........
r59721 | christian.heimes | 2008-01-04 16:48:06 +0100 (Fri, 04 Jan 2008) | 1 line
socket.ioctl is only available on Windows
........
r59722 | andrew.kuchling | 2008-01-04 19:24:41 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59723 | andrew.kuchling | 2008-01-04 19:25:05 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59725 | guido.van.rossum | 2008-01-05 01:59:59 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1725 by Mark Dickinson, fixes incorrect conversion of -1e1000
and adds errors for -0x.
........
r59726 | guido.van.rossum | 2008-01-05 02:21:57 +0100 (Sat, 05 Jan 2008) | 2 lines
Patch #1698 by Senthil: allow '@' in username when parsed by urlparse.py.
........
r59727 | raymond.hettinger | 2008-01-05 02:35:43 +0100 (Sat, 05 Jan 2008) | 1 line
Improve namedtuple's _cast() method with a docstring, new name, and error-checking.
........
r59728 | raymond.hettinger | 2008-01-05 03:17:24 +0100 (Sat, 05 Jan 2008) | 1 line
Add error-checking to namedtuple's _replace() method.
........
r59730 | fred.drake | 2008-01-05 05:38:38 +0100 (Sat, 05 Jan 2008) | 2 lines
clean up a comment
........
r59731 | jeffrey.yasskin | 2008-01-05 09:47:13 +0100 (Sat, 05 Jan 2008) | 11 lines
Continue rolling back pep-3141 changes that changed behavior from 2.5. This
round included:
* Revert round to its 2.6 behavior (half away from 0).
* Because round, floor, and ceil always return float again, it's no
longer necessary to have them delegate to __xxx___, so I've ripped
that out of their implementations and the Real ABC. This also helps
in implementing types that work in both 2.6 and 3.0: you return int
from the __xxx__ methods, and let it get enabled by the version
upgrade.
* Make pow(-1, .5) raise a ValueError again.
........
r59736 | andrew.kuchling | 2008-01-05 16:13:49 +0100 (Sat, 05 Jan 2008) | 1 line
Fix comment typo
........
r59738 | thomas.heller | 2008-01-05 18:15:44 +0100 (Sat, 05 Jan 2008) | 1 line
Add myself.
........
r59739 | georg.brandl | 2008-01-05 18:49:17 +0100 (Sat, 05 Jan 2008) | 2 lines
Fix C++-style comment.
........
r59742 | georg.brandl | 2008-01-05 20:28:16 +0100 (Sat, 05 Jan 2008) | 2 lines
Remove with_statement future imports from 2.6 docs.
........
r59743 | georg.brandl | 2008-01-05 20:29:45 +0100 (Sat, 05 Jan 2008) | 2 lines
Simplify index entries; fix #1712.
........
r59744 | georg.brandl | 2008-01-05 20:44:22 +0100 (Sat, 05 Jan 2008) | 2 lines
Doc patch #1730 from Robin Stocker; minor corrections mostly to os.rst.
........
r59749 | georg.brandl | 2008-01-05 21:29:13 +0100 (Sat, 05 Jan 2008) | 2 lines
Revert socket.rst to unix-eol.
........
r59750 | georg.brandl | 2008-01-05 21:33:46 +0100 (Sat, 05 Jan 2008) | 2 lines
Set native svn:eol-style property for text files.
........
r59752 | georg.brandl | 2008-01-05 21:46:29 +0100 (Sat, 05 Jan 2008) | 2 lines
#1719: capitalization error in "UuidCreate".
........
r59753 | georg.brandl | 2008-01-05 22:02:25 +0100 (Sat, 05 Jan 2008) | 2 lines
Repair markup.
........
r59754 | georg.brandl | 2008-01-05 22:10:50 +0100 (Sat, 05 Jan 2008) | 2 lines
Use markup.
........
r59757 | christian.heimes | 2008-01-05 22:35:52 +0100 (Sat, 05 Jan 2008) | 1 line
Final adjustments for #1601
........
r59758 | guido.van.rossum | 2008-01-05 23:19:06 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1637: fix urlparse for URLs like 'http://x.com?arg=/foo'.
Fix by John Nagle.
........
r59759 | guido.van.rossum | 2008-01-05 23:20:01 +0100 (Sat, 05 Jan 2008) | 2 lines
Add John Nagle (of issue #1637).
........
r59765 | raymond.hettinger | 2008-01-06 10:02:24 +0100 (Sun, 06 Jan 2008) | 1 line
Small code simplification. Forgot that classmethods can be called from intances.
........
r59766 | martin.v.loewis | 2008-01-06 11:09:48 +0100 (Sun, 06 Jan 2008) | 2 lines
Use vcbuild for VS 2009.
........
r59767 | martin.v.loewis | 2008-01-06 12:03:43 +0100 (Sun, 06 Jan 2008) | 2 lines
Package using VS 2008.
........
r59768 | martin.v.loewis | 2008-01-06 12:13:16 +0100 (Sun, 06 Jan 2008) | 2 lines
Don't try to package msvcr90 for the moment.
........
r59769 | georg.brandl | 2008-01-06 15:17:36 +0100 (Sun, 06 Jan 2008) | 4 lines
#1696393: don't check for '.' and '..' in ntpath.walk since
they aren't returned from os.listdir anymore.
Reported by Michael Haggerty.
........
r59770 | georg.brandl | 2008-01-06 15:27:15 +0100 (Sun, 06 Jan 2008) | 3 lines
#1742: don't raise exception on os.path.relpath("a", "a"), but return os.curdir.
Reported by Jesse Towner.
........
r59771 | georg.brandl | 2008-01-06 15:33:52 +0100 (Sun, 06 Jan 2008) | 2 lines
#1591: Clarify docstring of Popen3.
........
r59772 | georg.brandl | 2008-01-06 16:30:34 +0100 (Sun, 06 Jan 2008) | 2 lines
#1680: fix context manager example function name.
........
r59773 | georg.brandl | 2008-01-06 16:34:57 +0100 (Sun, 06 Jan 2008) | 2 lines
#1755097: document default values for [].sort() and sorted().
........
2008-01-06 12:59:19 -04:00
|
|
|
.. index:: triple: binary; bitwise; operation
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Each of the three bitwise operations has a different priority level:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-08-15 11:28:22 -03:00
|
|
|
and_expr: `shift_expr` | `and_expr` "&" `shift_expr`
|
|
|
|
xor_expr: `and_expr` | `xor_expr` "^" `and_expr`
|
|
|
|
or_expr: `xor_expr` | `or_expr` "|" `xor_expr`
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
pair: bitwise; and
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; & (ampersand)
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
The ``&`` operator yields the bitwise AND of its arguments, which must be
|
2024-01-22 12:21:14 -04:00
|
|
|
integers or one of them must be a custom object overriding :meth:`~object.__and__` or
|
|
|
|
:meth:`~object.__rand__` special methods.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index::
|
Merged revisions 59703-59773 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59704 | christian.heimes | 2008-01-04 04:15:05 +0100 (Fri, 04 Jan 2008) | 1 line
Moved include "Python.h" in front of other imports to silence a warning.
........
r59706 | raymond.hettinger | 2008-01-04 04:22:53 +0100 (Fri, 04 Jan 2008) | 10 lines
Minor fix-ups to named tuples:
* Make the _replace() method respect subclassing.
* Using property() to make _fields read-only wasn't a good idea.
It caused len(Point._fields) to fail.
* Add note to _cast() about length checking and alternative with the star-operator.
........
r59707 | jeffrey.yasskin | 2008-01-04 09:01:23 +0100 (Fri, 04 Jan 2008) | 3 lines
Make math.{floor,ceil}({int,long}) return float again for backwards
compatibility after r59671 made them return integral types.
........
r59709 | christian.heimes | 2008-01-04 14:21:07 +0100 (Fri, 04 Jan 2008) | 1 line
Bug #1713: posixpath.ismount() claims symlink to a mountpoint is a mountpoint.
........
r59712 | lars.gustaebel | 2008-01-04 15:00:33 +0100 (Fri, 04 Jan 2008) | 5 lines
Issue #1735: TarFile.extractall() now correctly sets
directory permissions and times.
(will backport to 2.5)
........
r59714 | andrew.kuchling | 2008-01-04 15:47:17 +0100 (Fri, 04 Jan 2008) | 1 line
Update links to bug/patch tracker
........
r59716 | christian.heimes | 2008-01-04 16:23:30 +0100 (Fri, 04 Jan 2008) | 1 line
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
........
r59717 | christian.heimes | 2008-01-04 16:29:00 +0100 (Fri, 04 Jan 2008) | 1 line
And here is the rest of Hirokazu Yamamoto's patch for VS6.0 support. Thanks Hiro!
........
r59719 | christian.heimes | 2008-01-04 16:34:06 +0100 (Fri, 04 Jan 2008) | 1 line
Reverted last transaction. It's the wrong branch.
........
r59721 | christian.heimes | 2008-01-04 16:48:06 +0100 (Fri, 04 Jan 2008) | 1 line
socket.ioctl is only available on Windows
........
r59722 | andrew.kuchling | 2008-01-04 19:24:41 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59723 | andrew.kuchling | 2008-01-04 19:25:05 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59725 | guido.van.rossum | 2008-01-05 01:59:59 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1725 by Mark Dickinson, fixes incorrect conversion of -1e1000
and adds errors for -0x.
........
r59726 | guido.van.rossum | 2008-01-05 02:21:57 +0100 (Sat, 05 Jan 2008) | 2 lines
Patch #1698 by Senthil: allow '@' in username when parsed by urlparse.py.
........
r59727 | raymond.hettinger | 2008-01-05 02:35:43 +0100 (Sat, 05 Jan 2008) | 1 line
Improve namedtuple's _cast() method with a docstring, new name, and error-checking.
........
r59728 | raymond.hettinger | 2008-01-05 03:17:24 +0100 (Sat, 05 Jan 2008) | 1 line
Add error-checking to namedtuple's _replace() method.
........
r59730 | fred.drake | 2008-01-05 05:38:38 +0100 (Sat, 05 Jan 2008) | 2 lines
clean up a comment
........
r59731 | jeffrey.yasskin | 2008-01-05 09:47:13 +0100 (Sat, 05 Jan 2008) | 11 lines
Continue rolling back pep-3141 changes that changed behavior from 2.5. This
round included:
* Revert round to its 2.6 behavior (half away from 0).
* Because round, floor, and ceil always return float again, it's no
longer necessary to have them delegate to __xxx___, so I've ripped
that out of their implementations and the Real ABC. This also helps
in implementing types that work in both 2.6 and 3.0: you return int
from the __xxx__ methods, and let it get enabled by the version
upgrade.
* Make pow(-1, .5) raise a ValueError again.
........
r59736 | andrew.kuchling | 2008-01-05 16:13:49 +0100 (Sat, 05 Jan 2008) | 1 line
Fix comment typo
........
r59738 | thomas.heller | 2008-01-05 18:15:44 +0100 (Sat, 05 Jan 2008) | 1 line
Add myself.
........
r59739 | georg.brandl | 2008-01-05 18:49:17 +0100 (Sat, 05 Jan 2008) | 2 lines
Fix C++-style comment.
........
r59742 | georg.brandl | 2008-01-05 20:28:16 +0100 (Sat, 05 Jan 2008) | 2 lines
Remove with_statement future imports from 2.6 docs.
........
r59743 | georg.brandl | 2008-01-05 20:29:45 +0100 (Sat, 05 Jan 2008) | 2 lines
Simplify index entries; fix #1712.
........
r59744 | georg.brandl | 2008-01-05 20:44:22 +0100 (Sat, 05 Jan 2008) | 2 lines
Doc patch #1730 from Robin Stocker; minor corrections mostly to os.rst.
........
r59749 | georg.brandl | 2008-01-05 21:29:13 +0100 (Sat, 05 Jan 2008) | 2 lines
Revert socket.rst to unix-eol.
........
r59750 | georg.brandl | 2008-01-05 21:33:46 +0100 (Sat, 05 Jan 2008) | 2 lines
Set native svn:eol-style property for text files.
........
r59752 | georg.brandl | 2008-01-05 21:46:29 +0100 (Sat, 05 Jan 2008) | 2 lines
#1719: capitalization error in "UuidCreate".
........
r59753 | georg.brandl | 2008-01-05 22:02:25 +0100 (Sat, 05 Jan 2008) | 2 lines
Repair markup.
........
r59754 | georg.brandl | 2008-01-05 22:10:50 +0100 (Sat, 05 Jan 2008) | 2 lines
Use markup.
........
r59757 | christian.heimes | 2008-01-05 22:35:52 +0100 (Sat, 05 Jan 2008) | 1 line
Final adjustments for #1601
........
r59758 | guido.van.rossum | 2008-01-05 23:19:06 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1637: fix urlparse for URLs like 'http://x.com?arg=/foo'.
Fix by John Nagle.
........
r59759 | guido.van.rossum | 2008-01-05 23:20:01 +0100 (Sat, 05 Jan 2008) | 2 lines
Add John Nagle (of issue #1637).
........
r59765 | raymond.hettinger | 2008-01-06 10:02:24 +0100 (Sun, 06 Jan 2008) | 1 line
Small code simplification. Forgot that classmethods can be called from intances.
........
r59766 | martin.v.loewis | 2008-01-06 11:09:48 +0100 (Sun, 06 Jan 2008) | 2 lines
Use vcbuild for VS 2009.
........
r59767 | martin.v.loewis | 2008-01-06 12:03:43 +0100 (Sun, 06 Jan 2008) | 2 lines
Package using VS 2008.
........
r59768 | martin.v.loewis | 2008-01-06 12:13:16 +0100 (Sun, 06 Jan 2008) | 2 lines
Don't try to package msvcr90 for the moment.
........
r59769 | georg.brandl | 2008-01-06 15:17:36 +0100 (Sun, 06 Jan 2008) | 4 lines
#1696393: don't check for '.' and '..' in ntpath.walk since
they aren't returned from os.listdir anymore.
Reported by Michael Haggerty.
........
r59770 | georg.brandl | 2008-01-06 15:27:15 +0100 (Sun, 06 Jan 2008) | 3 lines
#1742: don't raise exception on os.path.relpath("a", "a"), but return os.curdir.
Reported by Jesse Towner.
........
r59771 | georg.brandl | 2008-01-06 15:33:52 +0100 (Sun, 06 Jan 2008) | 2 lines
#1591: Clarify docstring of Popen3.
........
r59772 | georg.brandl | 2008-01-06 16:30:34 +0100 (Sun, 06 Jan 2008) | 2 lines
#1680: fix context manager example function name.
........
r59773 | georg.brandl | 2008-01-06 16:34:57 +0100 (Sun, 06 Jan 2008) | 2 lines
#1755097: document default values for [].sort() and sorted().
........
2008-01-06 12:59:19 -04:00
|
|
|
pair: bitwise; xor
|
2007-08-15 11:28:22 -03:00
|
|
|
pair: exclusive; or
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; ^ (caret)
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The ``^`` operator yields the bitwise XOR (exclusive OR) of its arguments, which
|
2024-01-22 12:21:14 -04:00
|
|
|
must be integers or one of them must be a custom object overriding :meth:`~object.__xor__` or
|
|
|
|
:meth:`~object.__rxor__` special methods.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index::
|
Merged revisions 59703-59773 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59704 | christian.heimes | 2008-01-04 04:15:05 +0100 (Fri, 04 Jan 2008) | 1 line
Moved include "Python.h" in front of other imports to silence a warning.
........
r59706 | raymond.hettinger | 2008-01-04 04:22:53 +0100 (Fri, 04 Jan 2008) | 10 lines
Minor fix-ups to named tuples:
* Make the _replace() method respect subclassing.
* Using property() to make _fields read-only wasn't a good idea.
It caused len(Point._fields) to fail.
* Add note to _cast() about length checking and alternative with the star-operator.
........
r59707 | jeffrey.yasskin | 2008-01-04 09:01:23 +0100 (Fri, 04 Jan 2008) | 3 lines
Make math.{floor,ceil}({int,long}) return float again for backwards
compatibility after r59671 made them return integral types.
........
r59709 | christian.heimes | 2008-01-04 14:21:07 +0100 (Fri, 04 Jan 2008) | 1 line
Bug #1713: posixpath.ismount() claims symlink to a mountpoint is a mountpoint.
........
r59712 | lars.gustaebel | 2008-01-04 15:00:33 +0100 (Fri, 04 Jan 2008) | 5 lines
Issue #1735: TarFile.extractall() now correctly sets
directory permissions and times.
(will backport to 2.5)
........
r59714 | andrew.kuchling | 2008-01-04 15:47:17 +0100 (Fri, 04 Jan 2008) | 1 line
Update links to bug/patch tracker
........
r59716 | christian.heimes | 2008-01-04 16:23:30 +0100 (Fri, 04 Jan 2008) | 1 line
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
........
r59717 | christian.heimes | 2008-01-04 16:29:00 +0100 (Fri, 04 Jan 2008) | 1 line
And here is the rest of Hirokazu Yamamoto's patch for VS6.0 support. Thanks Hiro!
........
r59719 | christian.heimes | 2008-01-04 16:34:06 +0100 (Fri, 04 Jan 2008) | 1 line
Reverted last transaction. It's the wrong branch.
........
r59721 | christian.heimes | 2008-01-04 16:48:06 +0100 (Fri, 04 Jan 2008) | 1 line
socket.ioctl is only available on Windows
........
r59722 | andrew.kuchling | 2008-01-04 19:24:41 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59723 | andrew.kuchling | 2008-01-04 19:25:05 +0100 (Fri, 04 Jan 2008) | 1 line
Fix markup
........
r59725 | guido.van.rossum | 2008-01-05 01:59:59 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1725 by Mark Dickinson, fixes incorrect conversion of -1e1000
and adds errors for -0x.
........
r59726 | guido.van.rossum | 2008-01-05 02:21:57 +0100 (Sat, 05 Jan 2008) | 2 lines
Patch #1698 by Senthil: allow '@' in username when parsed by urlparse.py.
........
r59727 | raymond.hettinger | 2008-01-05 02:35:43 +0100 (Sat, 05 Jan 2008) | 1 line
Improve namedtuple's _cast() method with a docstring, new name, and error-checking.
........
r59728 | raymond.hettinger | 2008-01-05 03:17:24 +0100 (Sat, 05 Jan 2008) | 1 line
Add error-checking to namedtuple's _replace() method.
........
r59730 | fred.drake | 2008-01-05 05:38:38 +0100 (Sat, 05 Jan 2008) | 2 lines
clean up a comment
........
r59731 | jeffrey.yasskin | 2008-01-05 09:47:13 +0100 (Sat, 05 Jan 2008) | 11 lines
Continue rolling back pep-3141 changes that changed behavior from 2.5. This
round included:
* Revert round to its 2.6 behavior (half away from 0).
* Because round, floor, and ceil always return float again, it's no
longer necessary to have them delegate to __xxx___, so I've ripped
that out of their implementations and the Real ABC. This also helps
in implementing types that work in both 2.6 and 3.0: you return int
from the __xxx__ methods, and let it get enabled by the version
upgrade.
* Make pow(-1, .5) raise a ValueError again.
........
r59736 | andrew.kuchling | 2008-01-05 16:13:49 +0100 (Sat, 05 Jan 2008) | 1 line
Fix comment typo
........
r59738 | thomas.heller | 2008-01-05 18:15:44 +0100 (Sat, 05 Jan 2008) | 1 line
Add myself.
........
r59739 | georg.brandl | 2008-01-05 18:49:17 +0100 (Sat, 05 Jan 2008) | 2 lines
Fix C++-style comment.
........
r59742 | georg.brandl | 2008-01-05 20:28:16 +0100 (Sat, 05 Jan 2008) | 2 lines
Remove with_statement future imports from 2.6 docs.
........
r59743 | georg.brandl | 2008-01-05 20:29:45 +0100 (Sat, 05 Jan 2008) | 2 lines
Simplify index entries; fix #1712.
........
r59744 | georg.brandl | 2008-01-05 20:44:22 +0100 (Sat, 05 Jan 2008) | 2 lines
Doc patch #1730 from Robin Stocker; minor corrections mostly to os.rst.
........
r59749 | georg.brandl | 2008-01-05 21:29:13 +0100 (Sat, 05 Jan 2008) | 2 lines
Revert socket.rst to unix-eol.
........
r59750 | georg.brandl | 2008-01-05 21:33:46 +0100 (Sat, 05 Jan 2008) | 2 lines
Set native svn:eol-style property for text files.
........
r59752 | georg.brandl | 2008-01-05 21:46:29 +0100 (Sat, 05 Jan 2008) | 2 lines
#1719: capitalization error in "UuidCreate".
........
r59753 | georg.brandl | 2008-01-05 22:02:25 +0100 (Sat, 05 Jan 2008) | 2 lines
Repair markup.
........
r59754 | georg.brandl | 2008-01-05 22:10:50 +0100 (Sat, 05 Jan 2008) | 2 lines
Use markup.
........
r59757 | christian.heimes | 2008-01-05 22:35:52 +0100 (Sat, 05 Jan 2008) | 1 line
Final adjustments for #1601
........
r59758 | guido.van.rossum | 2008-01-05 23:19:06 +0100 (Sat, 05 Jan 2008) | 3 lines
Patch #1637: fix urlparse for URLs like 'http://x.com?arg=/foo'.
Fix by John Nagle.
........
r59759 | guido.van.rossum | 2008-01-05 23:20:01 +0100 (Sat, 05 Jan 2008) | 2 lines
Add John Nagle (of issue #1637).
........
r59765 | raymond.hettinger | 2008-01-06 10:02:24 +0100 (Sun, 06 Jan 2008) | 1 line
Small code simplification. Forgot that classmethods can be called from intances.
........
r59766 | martin.v.loewis | 2008-01-06 11:09:48 +0100 (Sun, 06 Jan 2008) | 2 lines
Use vcbuild for VS 2009.
........
r59767 | martin.v.loewis | 2008-01-06 12:03:43 +0100 (Sun, 06 Jan 2008) | 2 lines
Package using VS 2008.
........
r59768 | martin.v.loewis | 2008-01-06 12:13:16 +0100 (Sun, 06 Jan 2008) | 2 lines
Don't try to package msvcr90 for the moment.
........
r59769 | georg.brandl | 2008-01-06 15:17:36 +0100 (Sun, 06 Jan 2008) | 4 lines
#1696393: don't check for '.' and '..' in ntpath.walk since
they aren't returned from os.listdir anymore.
Reported by Michael Haggerty.
........
r59770 | georg.brandl | 2008-01-06 15:27:15 +0100 (Sun, 06 Jan 2008) | 3 lines
#1742: don't raise exception on os.path.relpath("a", "a"), but return os.curdir.
Reported by Jesse Towner.
........
r59771 | georg.brandl | 2008-01-06 15:33:52 +0100 (Sun, 06 Jan 2008) | 2 lines
#1591: Clarify docstring of Popen3.
........
r59772 | georg.brandl | 2008-01-06 16:30:34 +0100 (Sun, 06 Jan 2008) | 2 lines
#1680: fix context manager example function name.
........
r59773 | georg.brandl | 2008-01-06 16:34:57 +0100 (Sun, 06 Jan 2008) | 2 lines
#1755097: document default values for [].sort() and sorted().
........
2008-01-06 12:59:19 -04:00
|
|
|
pair: bitwise; or
|
2007-08-15 11:28:22 -03:00
|
|
|
pair: inclusive; or
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; | (vertical bar)
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The ``|`` operator yields the bitwise (inclusive) OR of its arguments, which
|
2024-01-22 12:21:14 -04:00
|
|
|
must be integers or one of them must be a custom object overriding :meth:`~object.__or__` or
|
|
|
|
:meth:`~object.__ror__` special methods.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. _comparisons:
|
|
|
|
|
|
|
|
Comparisons
|
|
|
|
===========
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
single: comparison
|
|
|
|
pair: C; language
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; < (less)
|
|
|
|
pair: operator; > (greater)
|
|
|
|
pair: operator; <=
|
|
|
|
pair: operator; >=
|
|
|
|
pair: operator; ==
|
|
|
|
pair: operator; !=
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Unlike C, all comparison operations in Python have the same priority, which is
|
|
|
|
lower than that of any arithmetic, shifting or bitwise operation. Also unlike
|
|
|
|
C, expressions like ``a < b < c`` have the interpretation that is conventional
|
|
|
|
in mathematics:
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2018-07-07 17:24:46 -03:00
|
|
|
comparison: `or_expr` (`comp_operator` `or_expr`)*
|
2007-08-15 11:28:22 -03:00
|
|
|
comp_operator: "<" | ">" | "==" | ">=" | "<=" | "!="
|
|
|
|
: | "is" ["not"] | ["not"] "in"
|
|
|
|
|
2021-07-30 13:52:44 -03:00
|
|
|
Comparisons yield boolean values: ``True`` or ``False``. Custom
|
|
|
|
:dfn:`rich comparison methods` may return non-boolean values. In this case
|
|
|
|
Python will call :func:`bool` on such value in boolean contexts.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. index:: pair: chaining; comparisons
|
|
|
|
|
|
|
|
Comparisons can be chained arbitrarily, e.g., ``x < y <= z`` is equivalent to
|
|
|
|
``x < y and y <= z``, except that ``y`` is evaluated only once (but in both
|
|
|
|
cases ``z`` is not evaluated at all when ``x < y`` is found to be false).
|
|
|
|
|
Merged revisions 57221-57391 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r57227 | facundo.batista | 2007-08-20 17:16:21 -0700 (Mon, 20 Aug 2007) | 5 lines
Catch ProtocolError exceptions and include the header information in
test output (to make it easier to debug test failures caused by
problems in the server). [GSoC - Alan McIntyre]
........
r57229 | mark.hammond | 2007-08-20 18:04:47 -0700 (Mon, 20 Aug 2007) | 5 lines
[ 1761786 ] distutils.util.get_platform() return value on 64bit Windows
As discussed on distutils-sig: Allows the generated installer name on
64bit Windows platforms to be different than the name generated for
32bit Windows platforms.
........
r57230 | mark.hammond | 2007-08-20 18:05:16 -0700 (Mon, 20 Aug 2007) | 5 lines
[ 1761786 ] distutils.util.get_platform() return value on 64bit Windows
As discussed on distutils-sig: Allows the generated installer name on
64bit Windows platforms to be different than the name generated for
32bit Windows platforms.
........
r57253 | georg.brandl | 2007-08-20 23:01:18 -0700 (Mon, 20 Aug 2007) | 2 lines
Demand version 2.5.1 since 2.5 has a bug with codecs.open context managers.
........
r57254 | georg.brandl | 2007-08-20 23:03:43 -0700 (Mon, 20 Aug 2007) | 2 lines
Revert accidental checkins from last commit.
........
r57255 | georg.brandl | 2007-08-20 23:07:08 -0700 (Mon, 20 Aug 2007) | 2 lines
Bug #1777160: mention explicitly that e.g. -1**2 is -1.
........
r57256 | georg.brandl | 2007-08-20 23:12:19 -0700 (Mon, 20 Aug 2007) | 3 lines
Bug #1777168: replace operator names "opa"... with "op1"... and mark everything up as literal,
to enhance readability.
........
r57259 | facundo.batista | 2007-08-21 09:57:18 -0700 (Tue, 21 Aug 2007) | 8 lines
Added test for behavior of operations on an unconnected SMTP object,
and tests for NOOP, RSET, and VRFY. Corrected typo in a comment for
testNonnumericPort. Added a check for constructing SMTP objects when
non-numeric ports are included in the host name. Derived a server from
SMTPServer to test various ESMTP/SMTP capabilities. Check that a
second HELO to DebuggingServer returns an error. [GSoC - Alan McIntyre]
........
r57279 | skip.montanaro | 2007-08-22 12:02:16 -0700 (Wed, 22 Aug 2007) | 2 lines
Note that BeOS is unsupported as of Python 2.6.
........
r57280 | skip.montanaro | 2007-08-22 12:05:21 -0700 (Wed, 22 Aug 2007) | 1 line
whoops - need to check in configure as well
........
r57284 | alex.martelli | 2007-08-22 14:14:17 -0700 (Wed, 22 Aug 2007) | 5 lines
Fix compile.c so that it records 0.0 and -0.0 as separate constants in a code
object's co_consts tuple; add a test to show that the previous behavior (where
these two constants were "collapsed" into one) causes serious malfunctioning.
........
r57286 | gregory.p.smith | 2007-08-22 14:32:34 -0700 (Wed, 22 Aug 2007) | 3 lines
stop leaving log.0000001 __db.00* and xxx.db turds in developer
sandboxes when bsddb3 tests are run.
........
r57301 | jeffrey.yasskin | 2007-08-22 16:14:27 -0700 (Wed, 22 Aug 2007) | 3 lines
When setup.py fails to find the necessary bits to build some modules, have it
print a slightly more informative message.
........
r57320 | brett.cannon | 2007-08-23 07:53:17 -0700 (Thu, 23 Aug 2007) | 2 lines
Make test_runpy re-entrant.
........
r57324 | georg.brandl | 2007-08-23 10:54:11 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1768121: fix wrong/missing opcode docs.
........
r57326 | georg.brandl | 2007-08-23 10:57:05 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1766421: "return code" vs. "status code".
........
r57328 | georg.brandl | 2007-08-23 11:08:06 -0700 (Thu, 23 Aug 2007) | 2 lines
Second half of #1752175: #ifdef out references to PyImport_DynLoadFiletab if HAVE_DYNAMIC_LOADING is not defined.
........
r57331 | georg.brandl | 2007-08-23 11:11:33 -0700 (Thu, 23 Aug 2007) | 2 lines
Use try-except-finally in contextlib.
........
r57343 | georg.brandl | 2007-08-23 13:35:00 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1697820: document that the old slice protocol is still used by builtin types.
........
r57345 | georg.brandl | 2007-08-23 13:40:01 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1573854: fix docs for sqlite3 cursor rowcount attr.
........
r57347 | georg.brandl | 2007-08-23 13:50:23 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1694833: fix imp.find_module() docs wrt. packages.
........
r57348 | georg.brandl | 2007-08-23 13:53:28 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1594966: fix misleading usage example
........
r57349 | georg.brandl | 2007-08-23 13:55:44 -0700 (Thu, 23 Aug 2007) | 2 lines
Clarify wording a bit.
........
r57351 | georg.brandl | 2007-08-23 14:18:44 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1752332: httplib no longer uses socket.getaddrinfo().
........
r57352 | georg.brandl | 2007-08-23 14:21:36 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1734111: document struct.Struct.size.
........
r57353 | georg.brandl | 2007-08-23 14:27:57 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1688564: document os.path.join's absolute path behavior in the docstring.
........
r57354 | georg.brandl | 2007-08-23 14:36:05 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1625381: clarify match vs search introduction.
........
r57355 | georg.brandl | 2007-08-23 14:42:54 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1758696: more info about descriptors.
........
r57357 | georg.brandl | 2007-08-23 14:55:57 -0700 (Thu, 23 Aug 2007) | 2 lines
Patch #1779550: remove redundant code in logging.
........
r57378 | gregory.p.smith | 2007-08-23 22:11:38 -0700 (Thu, 23 Aug 2007) | 2 lines
Fix bug 1725856.
........
r57382 | georg.brandl | 2007-08-23 23:10:01 -0700 (Thu, 23 Aug 2007) | 2 lines
uuid creation is now threadsafe, backport from py3k rev. 57375.
........
r57389 | georg.brandl | 2007-08-24 04:47:37 -0700 (Fri, 24 Aug 2007) | 2 lines
Bug #1765375: fix stripping of unwanted LDFLAGS.
........
r57391 | guido.van.rossum | 2007-08-24 07:53:14 -0700 (Fri, 24 Aug 2007) | 2 lines
Fix silly typo in test name.
........
2007-08-24 13:32:05 -03:00
|
|
|
Formally, if *a*, *b*, *c*, ..., *y*, *z* are expressions and *op1*, *op2*, ...,
|
|
|
|
*opN* are comparison operators, then ``a op1 b op2 c ... y opN z`` is equivalent
|
|
|
|
to ``a op1 b and b op2 c and ... y opN z``, except that each expression is
|
|
|
|
evaluated at most once.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
Merged revisions 57221-57391 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r57227 | facundo.batista | 2007-08-20 17:16:21 -0700 (Mon, 20 Aug 2007) | 5 lines
Catch ProtocolError exceptions and include the header information in
test output (to make it easier to debug test failures caused by
problems in the server). [GSoC - Alan McIntyre]
........
r57229 | mark.hammond | 2007-08-20 18:04:47 -0700 (Mon, 20 Aug 2007) | 5 lines
[ 1761786 ] distutils.util.get_platform() return value on 64bit Windows
As discussed on distutils-sig: Allows the generated installer name on
64bit Windows platforms to be different than the name generated for
32bit Windows platforms.
........
r57230 | mark.hammond | 2007-08-20 18:05:16 -0700 (Mon, 20 Aug 2007) | 5 lines
[ 1761786 ] distutils.util.get_platform() return value on 64bit Windows
As discussed on distutils-sig: Allows the generated installer name on
64bit Windows platforms to be different than the name generated for
32bit Windows platforms.
........
r57253 | georg.brandl | 2007-08-20 23:01:18 -0700 (Mon, 20 Aug 2007) | 2 lines
Demand version 2.5.1 since 2.5 has a bug with codecs.open context managers.
........
r57254 | georg.brandl | 2007-08-20 23:03:43 -0700 (Mon, 20 Aug 2007) | 2 lines
Revert accidental checkins from last commit.
........
r57255 | georg.brandl | 2007-08-20 23:07:08 -0700 (Mon, 20 Aug 2007) | 2 lines
Bug #1777160: mention explicitly that e.g. -1**2 is -1.
........
r57256 | georg.brandl | 2007-08-20 23:12:19 -0700 (Mon, 20 Aug 2007) | 3 lines
Bug #1777168: replace operator names "opa"... with "op1"... and mark everything up as literal,
to enhance readability.
........
r57259 | facundo.batista | 2007-08-21 09:57:18 -0700 (Tue, 21 Aug 2007) | 8 lines
Added test for behavior of operations on an unconnected SMTP object,
and tests for NOOP, RSET, and VRFY. Corrected typo in a comment for
testNonnumericPort. Added a check for constructing SMTP objects when
non-numeric ports are included in the host name. Derived a server from
SMTPServer to test various ESMTP/SMTP capabilities. Check that a
second HELO to DebuggingServer returns an error. [GSoC - Alan McIntyre]
........
r57279 | skip.montanaro | 2007-08-22 12:02:16 -0700 (Wed, 22 Aug 2007) | 2 lines
Note that BeOS is unsupported as of Python 2.6.
........
r57280 | skip.montanaro | 2007-08-22 12:05:21 -0700 (Wed, 22 Aug 2007) | 1 line
whoops - need to check in configure as well
........
r57284 | alex.martelli | 2007-08-22 14:14:17 -0700 (Wed, 22 Aug 2007) | 5 lines
Fix compile.c so that it records 0.0 and -0.0 as separate constants in a code
object's co_consts tuple; add a test to show that the previous behavior (where
these two constants were "collapsed" into one) causes serious malfunctioning.
........
r57286 | gregory.p.smith | 2007-08-22 14:32:34 -0700 (Wed, 22 Aug 2007) | 3 lines
stop leaving log.0000001 __db.00* and xxx.db turds in developer
sandboxes when bsddb3 tests are run.
........
r57301 | jeffrey.yasskin | 2007-08-22 16:14:27 -0700 (Wed, 22 Aug 2007) | 3 lines
When setup.py fails to find the necessary bits to build some modules, have it
print a slightly more informative message.
........
r57320 | brett.cannon | 2007-08-23 07:53:17 -0700 (Thu, 23 Aug 2007) | 2 lines
Make test_runpy re-entrant.
........
r57324 | georg.brandl | 2007-08-23 10:54:11 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1768121: fix wrong/missing opcode docs.
........
r57326 | georg.brandl | 2007-08-23 10:57:05 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1766421: "return code" vs. "status code".
........
r57328 | georg.brandl | 2007-08-23 11:08:06 -0700 (Thu, 23 Aug 2007) | 2 lines
Second half of #1752175: #ifdef out references to PyImport_DynLoadFiletab if HAVE_DYNAMIC_LOADING is not defined.
........
r57331 | georg.brandl | 2007-08-23 11:11:33 -0700 (Thu, 23 Aug 2007) | 2 lines
Use try-except-finally in contextlib.
........
r57343 | georg.brandl | 2007-08-23 13:35:00 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1697820: document that the old slice protocol is still used by builtin types.
........
r57345 | georg.brandl | 2007-08-23 13:40:01 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1573854: fix docs for sqlite3 cursor rowcount attr.
........
r57347 | georg.brandl | 2007-08-23 13:50:23 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1694833: fix imp.find_module() docs wrt. packages.
........
r57348 | georg.brandl | 2007-08-23 13:53:28 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1594966: fix misleading usage example
........
r57349 | georg.brandl | 2007-08-23 13:55:44 -0700 (Thu, 23 Aug 2007) | 2 lines
Clarify wording a bit.
........
r57351 | georg.brandl | 2007-08-23 14:18:44 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1752332: httplib no longer uses socket.getaddrinfo().
........
r57352 | georg.brandl | 2007-08-23 14:21:36 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1734111: document struct.Struct.size.
........
r57353 | georg.brandl | 2007-08-23 14:27:57 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1688564: document os.path.join's absolute path behavior in the docstring.
........
r57354 | georg.brandl | 2007-08-23 14:36:05 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1625381: clarify match vs search introduction.
........
r57355 | georg.brandl | 2007-08-23 14:42:54 -0700 (Thu, 23 Aug 2007) | 2 lines
Bug #1758696: more info about descriptors.
........
r57357 | georg.brandl | 2007-08-23 14:55:57 -0700 (Thu, 23 Aug 2007) | 2 lines
Patch #1779550: remove redundant code in logging.
........
r57378 | gregory.p.smith | 2007-08-23 22:11:38 -0700 (Thu, 23 Aug 2007) | 2 lines
Fix bug 1725856.
........
r57382 | georg.brandl | 2007-08-23 23:10:01 -0700 (Thu, 23 Aug 2007) | 2 lines
uuid creation is now threadsafe, backport from py3k rev. 57375.
........
r57389 | georg.brandl | 2007-08-24 04:47:37 -0700 (Fri, 24 Aug 2007) | 2 lines
Bug #1765375: fix stripping of unwanted LDFLAGS.
........
r57391 | guido.van.rossum | 2007-08-24 07:53:14 -0700 (Fri, 24 Aug 2007) | 2 lines
Fix silly typo in test name.
........
2007-08-24 13:32:05 -03:00
|
|
|
Note that ``a op1 b op2 c`` doesn't imply any kind of comparison between *a* and
|
2007-08-15 11:28:22 -03:00
|
|
|
*c*, so that, e.g., ``x < y > z`` is perfectly legal (though perhaps not
|
|
|
|
pretty).
|
|
|
|
|
2021-10-25 00:27:24 -03:00
|
|
|
.. _expressions-value-comparisons:
|
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
Value comparisons
|
|
|
|
-----------------
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
The operators ``<``, ``>``, ``==``, ``>=``, ``<=``, and ``!=`` compare the
|
2015-09-23 02:28:13 -03:00
|
|
|
values of two objects. The objects do not need to have the same type.
|
|
|
|
|
|
|
|
Chapter :ref:`objects` states that objects have a value (in addition to type
|
|
|
|
and identity). The value of an object is a rather abstract notion in Python:
|
|
|
|
For example, there is no canonical access method for an object's value. Also,
|
|
|
|
there is no requirement that the value of an object should be constructed in a
|
|
|
|
particular way, e.g. comprised of all its data attributes. Comparison operators
|
|
|
|
implement a particular notion of what the value of an object is. One can think
|
|
|
|
of them as defining the value of an object indirectly, by means of their
|
|
|
|
comparison implementation.
|
|
|
|
|
|
|
|
Because all types are (direct or indirect) subtypes of :class:`object`, they
|
|
|
|
inherit the default comparison behavior from :class:`object`. Types can
|
|
|
|
customize their comparison behavior by implementing
|
2024-01-22 12:21:14 -04:00
|
|
|
:dfn:`rich comparison methods` like :meth:`~object.__lt__`, described in
|
2015-09-23 02:28:13 -03:00
|
|
|
:ref:`customization`.
|
|
|
|
|
|
|
|
The default behavior for equality comparison (``==`` and ``!=``) is based on
|
|
|
|
the identity of the objects. Hence, equality comparison of instances with the
|
|
|
|
same identity results in equality, and equality comparison of instances with
|
|
|
|
different identities results in inequality. A motivation for this default
|
|
|
|
behavior is the desire that all objects should be reflexive (i.e. ``x is y``
|
|
|
|
implies ``x == y``).
|
|
|
|
|
|
|
|
A default order comparison (``<``, ``>``, ``<=``, and ``>=``) is not provided;
|
|
|
|
an attempt raises :exc:`TypeError`. A motivation for this default behavior is
|
|
|
|
the lack of a similar invariant as for equality.
|
|
|
|
|
|
|
|
The behavior of the default equality comparison, that instances with different
|
|
|
|
identities are always unequal, may be in contrast to what types will need that
|
|
|
|
have a sensible definition of object value and value-based equality. Such
|
|
|
|
types will need to customize their comparison behavior, and in fact, a number
|
|
|
|
of built-in types have done that.
|
|
|
|
|
|
|
|
The following list describes the comparison behavior of the most important
|
|
|
|
built-in types.
|
|
|
|
|
|
|
|
* Numbers of built-in numeric types (:ref:`typesnumeric`) and of the standard
|
|
|
|
library types :class:`fractions.Fraction` and :class:`decimal.Decimal` can be
|
|
|
|
compared within and across their types, with the restriction that complex
|
|
|
|
numbers do not support order comparison. Within the limits of the types
|
|
|
|
involved, they compare mathematically (algorithmically) correct without loss
|
|
|
|
of precision.
|
|
|
|
|
2018-09-14 14:48:50 -03:00
|
|
|
The not-a-number values ``float('NaN')`` and ``decimal.Decimal('NaN')`` are
|
|
|
|
special. Any ordered comparison of a number to a not-a-number value is false.
|
|
|
|
A counter-intuitive implication is that not-a-number values are not equal to
|
2020-04-05 06:25:24 -03:00
|
|
|
themselves. For example, if ``x = float('NaN')``, ``3 < x``, ``x < 3`` and
|
|
|
|
``x == x`` are all false, while ``x != x`` is true. This behavior is
|
|
|
|
compliant with IEEE 754.
|
2008-11-17 18:55:16 -04:00
|
|
|
|
2019-08-24 14:43:55 -03:00
|
|
|
* ``None`` and ``NotImplemented`` are singletons. :PEP:`8` advises that
|
|
|
|
comparisons for singletons should always be done with ``is`` or ``is not``,
|
|
|
|
never the equality operators.
|
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
* Binary sequences (instances of :class:`bytes` or :class:`bytearray`) can be
|
|
|
|
compared within and across their types. They compare lexicographically using
|
|
|
|
the numeric values of their elements.
|
|
|
|
|
|
|
|
* Strings (instances of :class:`str`) compare lexicographically using the
|
|
|
|
numerical Unicode code points (the result of the built-in function
|
|
|
|
:func:`ord`) of their characters. [#]_
|
|
|
|
|
|
|
|
Strings and binary sequences cannot be directly compared.
|
|
|
|
|
|
|
|
* Sequences (instances of :class:`tuple`, :class:`list`, or :class:`range`) can
|
|
|
|
be compared only within each of their types, with the restriction that ranges
|
|
|
|
do not support order comparison. Equality comparison across these types
|
2017-02-24 16:32:54 -04:00
|
|
|
results in inequality, and ordering comparison across these types raises
|
2015-09-23 02:28:13 -03:00
|
|
|
:exc:`TypeError`.
|
|
|
|
|
|
|
|
Sequences compare lexicographically using comparison of corresponding
|
2019-08-24 14:43:55 -03:00
|
|
|
elements. The built-in containers typically assume identical objects are
|
|
|
|
equal to themselves. That lets them bypass equality tests for identical
|
|
|
|
objects to improve performance and to maintain their internal invariants.
|
2015-09-23 02:28:13 -03:00
|
|
|
|
|
|
|
Lexicographical comparison between built-in collections works as follows:
|
|
|
|
|
|
|
|
- For two collections to compare equal, they must be of the same type, have
|
|
|
|
the same length, and each pair of corresponding elements must compare
|
|
|
|
equal (for example, ``[1,2] == (1,2)`` is false because the type is not the
|
|
|
|
same).
|
|
|
|
|
|
|
|
- Collections that support order comparison are ordered the same as their
|
|
|
|
first unequal elements (for example, ``[1,2,x] <= [1,2,y]`` has the same
|
|
|
|
value as ``x <= y``). If a corresponding element does not exist, the
|
|
|
|
shorter collection is ordered first (for example, ``[1,2] < [1,2,3]`` is
|
|
|
|
true).
|
|
|
|
|
|
|
|
* Mappings (instances of :class:`dict`) compare equal if and only if they have
|
2022-10-06 22:01:30 -03:00
|
|
|
equal ``(key, value)`` pairs. Equality comparison of the keys and values
|
2015-09-23 02:28:13 -03:00
|
|
|
enforces reflexivity.
|
|
|
|
|
|
|
|
Order comparisons (``<``, ``>``, ``<=``, and ``>=``) raise :exc:`TypeError`.
|
|
|
|
|
|
|
|
* Sets (instances of :class:`set` or :class:`frozenset`) can be compared within
|
|
|
|
and across their types.
|
|
|
|
|
|
|
|
They define order
|
|
|
|
comparison operators to mean subset and superset tests. Those relations do
|
|
|
|
not define total orderings (for example, the two sets ``{1,2}`` and ``{2,3}``
|
|
|
|
are not equal, nor subsets of one another, nor supersets of one
|
|
|
|
another). Accordingly, sets are not appropriate arguments for functions
|
|
|
|
which depend on total ordering (for example, :func:`min`, :func:`max`, and
|
|
|
|
:func:`sorted` produce undefined results given a list of sets as inputs).
|
2007-08-31 06:22:56 -03:00
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
Comparison of sets enforces reflexivity of its elements.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
* Most other built-in types have no comparison methods implemented, so they
|
|
|
|
inherit the default comparison behavior.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
User-defined classes that customize their comparison behavior should follow
|
|
|
|
some consistency rules, if possible:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
* Equality comparison should be reflexive.
|
|
|
|
In other words, identical objects should compare equal:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
``x is y`` implies ``x == y``
|
|
|
|
|
|
|
|
* Comparison should be symmetric.
|
|
|
|
In other words, the following expressions should have the same result:
|
|
|
|
|
|
|
|
``x == y`` and ``y == x``
|
|
|
|
|
|
|
|
``x != y`` and ``y != x``
|
|
|
|
|
|
|
|
``x < y`` and ``y > x``
|
|
|
|
|
|
|
|
``x <= y`` and ``y >= x``
|
|
|
|
|
|
|
|
* Comparison should be transitive.
|
|
|
|
The following (non-exhaustive) examples illustrate that:
|
|
|
|
|
|
|
|
``x > y and y > z`` implies ``x > z``
|
2008-11-17 18:55:16 -04:00
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
``x < y and y <= z`` implies ``x < z``
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
* Inverse comparison should result in the boolean negation.
|
|
|
|
In other words, the following expressions should have the same result:
|
2008-11-17 18:55:16 -04:00
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
``x == y`` and ``not x != y``
|
|
|
|
|
|
|
|
``x < y`` and ``not x >= y`` (for total ordering)
|
|
|
|
|
|
|
|
``x > y`` and ``not x <= y`` (for total ordering)
|
|
|
|
|
|
|
|
The last two expressions apply to totally ordered collections (e.g. to
|
|
|
|
sequences, but not to sets or mappings). See also the
|
|
|
|
:func:`~functools.total_ordering` decorator.
|
|
|
|
|
2017-01-29 06:00:23 -04:00
|
|
|
* The :func:`hash` result should be consistent with equality.
|
|
|
|
Objects that are equal should either have the same hash value,
|
|
|
|
or be marked as unhashable.
|
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
Python does not enforce these consistency rules. In fact, the not-a-number
|
|
|
|
values are an example for not following these rules.
|
|
|
|
|
|
|
|
|
|
|
|
.. _in:
|
|
|
|
.. _not in:
|
Merged revisions 75365,75394,75402-75403,75418,75459,75484,75592-75596,75600,75602-75607,75610-75613,75616-75617,75623,75627,75640,75647,75696,75795 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r75365 | georg.brandl | 2009-10-11 22:16:16 +0200 (So, 11 Okt 2009) | 1 line
Fix broken links found by "make linkcheck". scipy.org seems to be done right now, so I could not verify links going there.
........
r75394 | georg.brandl | 2009-10-13 20:10:59 +0200 (Di, 13 Okt 2009) | 1 line
Fix markup.
........
r75402 | georg.brandl | 2009-10-14 17:51:48 +0200 (Mi, 14 Okt 2009) | 1 line
#7125: fix typo.
........
r75403 | georg.brandl | 2009-10-14 17:57:46 +0200 (Mi, 14 Okt 2009) | 1 line
#7126: os.environ changes *do* take effect in subprocesses started with os.system().
........
r75418 | georg.brandl | 2009-10-14 20:48:32 +0200 (Mi, 14 Okt 2009) | 1 line
#7116: str.join() takes an iterable.
........
r75459 | georg.brandl | 2009-10-17 10:57:43 +0200 (Sa, 17 Okt 2009) | 1 line
Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.
........
r75484 | georg.brandl | 2009-10-18 09:58:12 +0200 (So, 18 Okt 2009) | 1 line
Fix missing word.
........
r75592 | georg.brandl | 2009-10-22 09:05:48 +0200 (Do, 22 Okt 2009) | 1 line
Fix punctuation.
........
r75593 | georg.brandl | 2009-10-22 09:06:49 +0200 (Do, 22 Okt 2009) | 1 line
Revert unintended change.
........
r75594 | georg.brandl | 2009-10-22 09:56:02 +0200 (Do, 22 Okt 2009) | 1 line
Fix markup.
........
r75595 | georg.brandl | 2009-10-22 09:56:56 +0200 (Do, 22 Okt 2009) | 1 line
Fix duplicate target.
........
r75596 | georg.brandl | 2009-10-22 10:05:04 +0200 (Do, 22 Okt 2009) | 1 line
Add a new directive marking up implementation details and start using it.
........
r75600 | georg.brandl | 2009-10-22 13:01:46 +0200 (Do, 22 Okt 2009) | 1 line
Make it more robust.
........
r75602 | georg.brandl | 2009-10-22 13:28:06 +0200 (Do, 22 Okt 2009) | 1 line
Document new directive.
........
r75603 | georg.brandl | 2009-10-22 13:28:23 +0200 (Do, 22 Okt 2009) | 1 line
Allow short form with text as argument.
........
r75604 | georg.brandl | 2009-10-22 13:36:50 +0200 (Do, 22 Okt 2009) | 1 line
Fix stylesheet for multi-paragraph impl-details.
........
r75605 | georg.brandl | 2009-10-22 13:48:10 +0200 (Do, 22 Okt 2009) | 1 line
Use "impl-detail" directive where applicable.
........
r75606 | georg.brandl | 2009-10-22 17:00:06 +0200 (Do, 22 Okt 2009) | 1 line
#6324: membership test tries iteration via __iter__.
........
r75607 | georg.brandl | 2009-10-22 17:04:09 +0200 (Do, 22 Okt 2009) | 1 line
#7088: document new functions in signal as Unix-only.
........
r75610 | georg.brandl | 2009-10-22 17:27:24 +0200 (Do, 22 Okt 2009) | 1 line
Reorder __slots__ fine print and add a clarification.
........
r75611 | georg.brandl | 2009-10-22 17:42:32 +0200 (Do, 22 Okt 2009) | 1 line
#7035: improve docs of the various <method>_errors() functions, and give them docstrings.
........
r75612 | georg.brandl | 2009-10-22 17:52:15 +0200 (Do, 22 Okt 2009) | 1 line
#7156: document curses as Unix-only.
........
r75613 | georg.brandl | 2009-10-22 17:54:35 +0200 (Do, 22 Okt 2009) | 1 line
#6977: getopt does not support optional option arguments.
........
r75616 | georg.brandl | 2009-10-22 18:17:05 +0200 (Do, 22 Okt 2009) | 1 line
Add proper references.
........
r75617 | georg.brandl | 2009-10-22 18:20:55 +0200 (Do, 22 Okt 2009) | 1 line
Make printout margin important.
........
r75623 | georg.brandl | 2009-10-23 10:14:44 +0200 (Fr, 23 Okt 2009) | 1 line
#7188: fix optionxform() docs.
........
r75627 | fred.drake | 2009-10-23 15:04:51 +0200 (Fr, 23 Okt 2009) | 2 lines
add further note about what's passed to optionxform
........
r75640 | neil.schemenauer | 2009-10-23 21:58:17 +0200 (Fr, 23 Okt 2009) | 2 lines
Improve some docstrings in the 'warnings' module.
........
r75647 | georg.brandl | 2009-10-24 12:04:19 +0200 (Sa, 24 Okt 2009) | 1 line
Fix markup.
........
r75696 | georg.brandl | 2009-10-25 21:25:43 +0100 (So, 25 Okt 2009) | 1 line
Fix a demo.
........
r75795 | georg.brandl | 2009-10-27 16:10:22 +0100 (Di, 27 Okt 2009) | 1 line
Fix a strange mis-edit.
........
2009-10-27 12:28:25 -03:00
|
|
|
.. _membership-test-details:
|
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
Membership test operations
|
|
|
|
--------------------------
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
The operators :keyword:`in` and :keyword:`not in` test for membership. ``x in
|
2017-03-28 11:13:01 -03:00
|
|
|
s`` evaluates to ``True`` if *x* is a member of *s*, and ``False`` otherwise.
|
|
|
|
``x not in s`` returns the negation of ``x in s``. All built-in sequences and
|
2018-12-19 02:09:46 -04:00
|
|
|
set types support this as well as dictionary, for which :keyword:`!in` tests
|
2017-03-28 11:13:01 -03:00
|
|
|
whether the dictionary has a given key. For container types such as list, tuple,
|
|
|
|
set, frozenset, dict, or collections.deque, the expression ``x in y`` is equivalent
|
2010-04-01 07:34:09 -03:00
|
|
|
to ``any(x is e or x == e for e in y)``.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2017-03-28 11:13:01 -03:00
|
|
|
For the string and bytes types, ``x in y`` is ``True`` if and only if *x* is a
|
2007-08-31 06:22:56 -03:00
|
|
|
substring of *y*. An equivalent test is ``y.find(x) != -1``. Empty strings are
|
|
|
|
always considered to be a substring of any other string, so ``"" in "abc"`` will
|
|
|
|
return ``True``.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
For user-defined classes which define the :meth:`~object.__contains__` method, ``x in
|
2017-03-28 11:13:01 -03:00
|
|
|
y`` returns ``True`` if ``y.__contains__(x)`` returns a true value, and
|
|
|
|
``False`` otherwise.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2024-01-22 12:21:14 -04:00
|
|
|
For user-defined classes which do not define :meth:`~object.__contains__` but do define
|
|
|
|
:meth:`~object.__iter__`, ``x in y`` is ``True`` if some value ``z``, for which the
|
2019-05-30 17:19:29 -03:00
|
|
|
expression ``x is z or x == z`` is true, is produced while iterating over ``y``.
|
|
|
|
If an exception is raised during the iteration, it is as if :keyword:`in` raised
|
|
|
|
that exception.
|
Merged revisions 75365,75394,75402-75403,75418,75459,75484,75592-75596,75600,75602-75607,75610-75613,75616-75617,75623,75627,75640,75647,75696,75795 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r75365 | georg.brandl | 2009-10-11 22:16:16 +0200 (So, 11 Okt 2009) | 1 line
Fix broken links found by "make linkcheck". scipy.org seems to be done right now, so I could not verify links going there.
........
r75394 | georg.brandl | 2009-10-13 20:10:59 +0200 (Di, 13 Okt 2009) | 1 line
Fix markup.
........
r75402 | georg.brandl | 2009-10-14 17:51:48 +0200 (Mi, 14 Okt 2009) | 1 line
#7125: fix typo.
........
r75403 | georg.brandl | 2009-10-14 17:57:46 +0200 (Mi, 14 Okt 2009) | 1 line
#7126: os.environ changes *do* take effect in subprocesses started with os.system().
........
r75418 | georg.brandl | 2009-10-14 20:48:32 +0200 (Mi, 14 Okt 2009) | 1 line
#7116: str.join() takes an iterable.
........
r75459 | georg.brandl | 2009-10-17 10:57:43 +0200 (Sa, 17 Okt 2009) | 1 line
Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.
........
r75484 | georg.brandl | 2009-10-18 09:58:12 +0200 (So, 18 Okt 2009) | 1 line
Fix missing word.
........
r75592 | georg.brandl | 2009-10-22 09:05:48 +0200 (Do, 22 Okt 2009) | 1 line
Fix punctuation.
........
r75593 | georg.brandl | 2009-10-22 09:06:49 +0200 (Do, 22 Okt 2009) | 1 line
Revert unintended change.
........
r75594 | georg.brandl | 2009-10-22 09:56:02 +0200 (Do, 22 Okt 2009) | 1 line
Fix markup.
........
r75595 | georg.brandl | 2009-10-22 09:56:56 +0200 (Do, 22 Okt 2009) | 1 line
Fix duplicate target.
........
r75596 | georg.brandl | 2009-10-22 10:05:04 +0200 (Do, 22 Okt 2009) | 1 line
Add a new directive marking up implementation details and start using it.
........
r75600 | georg.brandl | 2009-10-22 13:01:46 +0200 (Do, 22 Okt 2009) | 1 line
Make it more robust.
........
r75602 | georg.brandl | 2009-10-22 13:28:06 +0200 (Do, 22 Okt 2009) | 1 line
Document new directive.
........
r75603 | georg.brandl | 2009-10-22 13:28:23 +0200 (Do, 22 Okt 2009) | 1 line
Allow short form with text as argument.
........
r75604 | georg.brandl | 2009-10-22 13:36:50 +0200 (Do, 22 Okt 2009) | 1 line
Fix stylesheet for multi-paragraph impl-details.
........
r75605 | georg.brandl | 2009-10-22 13:48:10 +0200 (Do, 22 Okt 2009) | 1 line
Use "impl-detail" directive where applicable.
........
r75606 | georg.brandl | 2009-10-22 17:00:06 +0200 (Do, 22 Okt 2009) | 1 line
#6324: membership test tries iteration via __iter__.
........
r75607 | georg.brandl | 2009-10-22 17:04:09 +0200 (Do, 22 Okt 2009) | 1 line
#7088: document new functions in signal as Unix-only.
........
r75610 | georg.brandl | 2009-10-22 17:27:24 +0200 (Do, 22 Okt 2009) | 1 line
Reorder __slots__ fine print and add a clarification.
........
r75611 | georg.brandl | 2009-10-22 17:42:32 +0200 (Do, 22 Okt 2009) | 1 line
#7035: improve docs of the various <method>_errors() functions, and give them docstrings.
........
r75612 | georg.brandl | 2009-10-22 17:52:15 +0200 (Do, 22 Okt 2009) | 1 line
#7156: document curses as Unix-only.
........
r75613 | georg.brandl | 2009-10-22 17:54:35 +0200 (Do, 22 Okt 2009) | 1 line
#6977: getopt does not support optional option arguments.
........
r75616 | georg.brandl | 2009-10-22 18:17:05 +0200 (Do, 22 Okt 2009) | 1 line
Add proper references.
........
r75617 | georg.brandl | 2009-10-22 18:20:55 +0200 (Do, 22 Okt 2009) | 1 line
Make printout margin important.
........
r75623 | georg.brandl | 2009-10-23 10:14:44 +0200 (Fr, 23 Okt 2009) | 1 line
#7188: fix optionxform() docs.
........
r75627 | fred.drake | 2009-10-23 15:04:51 +0200 (Fr, 23 Okt 2009) | 2 lines
add further note about what's passed to optionxform
........
r75640 | neil.schemenauer | 2009-10-23 21:58:17 +0200 (Fr, 23 Okt 2009) | 2 lines
Improve some docstrings in the 'warnings' module.
........
r75647 | georg.brandl | 2009-10-24 12:04:19 +0200 (Sa, 24 Okt 2009) | 1 line
Fix markup.
........
r75696 | georg.brandl | 2009-10-25 21:25:43 +0100 (So, 25 Okt 2009) | 1 line
Fix a demo.
........
r75795 | georg.brandl | 2009-10-27 16:10:22 +0100 (Di, 27 Okt 2009) | 1 line
Fix a strange mis-edit.
........
2009-10-27 12:28:25 -03:00
|
|
|
|
|
|
|
Lastly, the old-style iteration protocol is tried: if a class defines
|
2023-10-19 12:05:05 -03:00
|
|
|
:meth:`~object.__getitem__`, ``x in y`` is ``True`` if and only if there is a non-negative
|
2019-05-30 17:19:29 -03:00
|
|
|
integer index *i* such that ``x is y[i] or x == y[i]``, and no lower integer index
|
|
|
|
raises the :exc:`IndexError` exception. (If any other exception is raised, it is as
|
2007-08-15 11:28:22 -03:00
|
|
|
if :keyword:`in` raised that exception).
|
|
|
|
|
|
|
|
.. index::
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; in
|
|
|
|
pair: operator; not in
|
2007-08-15 11:28:22 -03:00
|
|
|
pair: membership; test
|
2023-05-04 07:04:41 -03:00
|
|
|
pair: object; sequence
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2019-05-13 10:05:20 -03:00
|
|
|
The operator :keyword:`not in` is defined to have the inverse truth value of
|
2007-08-15 11:28:22 -03:00
|
|
|
:keyword:`in`.
|
|
|
|
|
|
|
|
.. index::
|
2023-05-04 06:03:11 -03:00
|
|
|
pair: operator; is
|
|
|
|
pair: operator; is not
|
2007-08-15 11:28:22 -03:00
|
|
|
pair: identity; test
|
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
|
|
|
|
.. _is:
|
|
|
|
.. _is not:
|
|
|
|
|
|
|
|
Identity comparisons
|
|
|
|
--------------------
|
|
|
|
|
2019-05-13 10:05:20 -03:00
|
|
|
The operators :keyword:`is` and :keyword:`is not` test for an object's identity: ``x
|
|
|
|
is y`` is true if and only if *x* and *y* are the same object. An Object's identity
|
2016-09-11 21:23:49 -03:00
|
|
|
is determined using the :meth:`id` function. ``x is not y`` yields the inverse
|
|
|
|
truth value. [#]_
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. _booleans:
|
Merged revisions 59605-59624 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59606 | georg.brandl | 2007-12-29 11:57:00 +0100 (Sat, 29 Dec 2007) | 2 lines
Some cleanup in the docs.
........
r59611 | martin.v.loewis | 2007-12-29 19:49:21 +0100 (Sat, 29 Dec 2007) | 2 lines
Bug #1699: Define _BSD_SOURCE only on OpenBSD.
........
r59612 | raymond.hettinger | 2007-12-29 23:09:34 +0100 (Sat, 29 Dec 2007) | 1 line
Simpler documentation for itertools.tee(). Should be backported.
........
r59613 | raymond.hettinger | 2007-12-29 23:16:24 +0100 (Sat, 29 Dec 2007) | 1 line
Improve docs for itertools.groupby(). The use of xrange(0) to create a unique object is less obvious than object().
........
r59620 | christian.heimes | 2007-12-31 15:47:07 +0100 (Mon, 31 Dec 2007) | 3 lines
Added wininst-9.0.exe executable for VS 2008
Integrated bdist_wininst into PCBuild9 directory
........
r59621 | christian.heimes | 2007-12-31 15:51:18 +0100 (Mon, 31 Dec 2007) | 1 line
Moved PCbuild directory to PC/VS7.1
........
r59622 | christian.heimes | 2007-12-31 15:59:26 +0100 (Mon, 31 Dec 2007) | 1 line
Fix paths for build bot
........
r59623 | christian.heimes | 2007-12-31 16:02:41 +0100 (Mon, 31 Dec 2007) | 1 line
Fix paths for build bot, part 2
........
r59624 | christian.heimes | 2007-12-31 16:18:55 +0100 (Mon, 31 Dec 2007) | 1 line
Renamed PCBuild9 directory to PCBuild
........
2007-12-31 12:14:33 -04:00
|
|
|
.. _and:
|
|
|
|
.. _or:
|
|
|
|
.. _not:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Boolean operations
|
|
|
|
==================
|
|
|
|
|
|
|
|
.. index::
|
|
|
|
pair: Conditional; expression
|
|
|
|
pair: Boolean; operation
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2007-08-15 11:28:22 -03:00
|
|
|
or_test: `and_test` | `or_test` "or" `and_test`
|
|
|
|
and_test: `not_test` | `and_test` "and" `not_test`
|
|
|
|
not_test: `comparison` | "not" `not_test`
|
|
|
|
|
|
|
|
In the context of Boolean operations, and also when expressions are used by
|
|
|
|
control flow statements, the following values are interpreted as false:
|
|
|
|
``False``, ``None``, numeric zero of all types, and empty strings and containers
|
|
|
|
(including strings, tuples, lists, dictionaries, sets and frozensets). All
|
2007-09-07 11:15:41 -03:00
|
|
|
other values are interpreted as true. User-defined objects can customize their
|
2023-07-29 02:48:10 -03:00
|
|
|
truth value by providing a :meth:`~object.__bool__` method.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2023-05-04 06:03:11 -03:00
|
|
|
.. index:: pair: operator; not
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The operator :keyword:`not` yields ``True`` if its argument is false, ``False``
|
|
|
|
otherwise.
|
|
|
|
|
2023-05-04 06:03:11 -03:00
|
|
|
.. index:: pair: operator; and
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The expression ``x and y`` first evaluates *x*; if *x* is false, its value is
|
|
|
|
returned; otherwise, *y* is evaluated and the resulting value is returned.
|
|
|
|
|
2023-05-04 06:03:11 -03:00
|
|
|
.. index:: pair: operator; or
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
The expression ``x or y`` first evaluates *x*; if *x* is true, its value is
|
|
|
|
returned; otherwise, *y* is evaluated and the resulting value is returned.
|
|
|
|
|
2018-12-05 15:45:30 -04:00
|
|
|
Note that neither :keyword:`and` nor :keyword:`or` restrict the value and type
|
2007-08-15 11:28:22 -03:00
|
|
|
they return to ``False`` and ``True``, but rather return the last evaluated
|
2007-09-07 11:15:41 -03:00
|
|
|
argument. This is sometimes useful, e.g., if ``s`` is a string that should be
|
2007-08-15 11:28:22 -03:00
|
|
|
replaced by a default value if it is empty, the expression ``s or 'foo'`` yields
|
2014-05-27 02:20:37 -03:00
|
|
|
the desired value. Because :keyword:`not` has to create a new value, it
|
|
|
|
returns a boolean value regardless of the type of its argument
|
|
|
|
(for example, ``not 'foo'`` produces ``False`` rather than ``''``.)
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
2022-10-08 03:54:16 -03:00
|
|
|
.. index::
|
|
|
|
single: := (colon equals)
|
|
|
|
single: assignment expression
|
|
|
|
single: walrus operator
|
|
|
|
single: named expression
|
|
|
|
|
2020-03-06 01:19:22 -04:00
|
|
|
Assignment expressions
|
|
|
|
======================
|
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2020-03-06 01:19:22 -04:00
|
|
|
assignment_expression: [`identifier` ":="] `expression`
|
|
|
|
|
2020-07-25 20:33:48 -03:00
|
|
|
An assignment expression (sometimes also called a "named expression" or
|
2021-11-18 12:06:38 -04:00
|
|
|
"walrus") assigns an :token:`~python-grammar:expression` to an
|
|
|
|
:token:`~python-grammar:identifier`, while also returning the value of the
|
|
|
|
:token:`~python-grammar:expression`.
|
2020-03-06 01:19:22 -04:00
|
|
|
|
2020-07-25 20:33:48 -03:00
|
|
|
One common use case is when handling matched regular expressions:
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
if matching := pattern.search(data):
|
|
|
|
do_something(matching)
|
|
|
|
|
|
|
|
Or, when processing a file stream in chunks:
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
while chunk := file.read(9000):
|
|
|
|
process(chunk)
|
|
|
|
|
2023-11-12 20:06:50 -04:00
|
|
|
Assignment expressions must be surrounded by parentheses when
|
|
|
|
used as expression statements and when used as sub-expressions in
|
|
|
|
slicing, conditional, lambda,
|
|
|
|
keyword-argument, and comprehension-if expressions and
|
|
|
|
in ``assert``, ``with``, and ``assignment`` statements.
|
2022-10-06 16:24:17 -03:00
|
|
|
In all other places where they can be used, parentheses are not required,
|
|
|
|
including in ``if`` and ``while`` statements.
|
|
|
|
|
2020-07-25 20:33:48 -03:00
|
|
|
.. versionadded:: 3.8
|
|
|
|
See :pep:`572` for more details about assignment expressions.
|
2020-03-06 01:19:22 -04:00
|
|
|
|
|
|
|
|
2018-12-19 02:09:46 -04:00
|
|
|
.. _if_expr:
|
|
|
|
|
2010-12-15 15:47:37 -04:00
|
|
|
Conditional expressions
|
Merged revisions 78760,78771-78773,78802,78922,78952 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78760 | georg.brandl | 2010-03-07 16:23:59 +0100 (So, 07 Mär 2010) | 1 line
#5341: more built-in vs builtin fixes.
........
r78771 | georg.brandl | 2010-03-07 21:58:31 +0100 (So, 07 Mär 2010) | 1 line
#8085: The function is called PyObject_NewVar, not PyObject_VarNew.
........
r78772 | georg.brandl | 2010-03-07 22:12:28 +0100 (So, 07 Mär 2010) | 1 line
#8039: document conditional expressions better, giving them their own section.
........
r78773 | georg.brandl | 2010-03-07 22:32:06 +0100 (So, 07 Mär 2010) | 1 line
#8044: document Py_{Enter,Leave}RecursiveCall functions.
........
r78802 | georg.brandl | 2010-03-08 17:28:40 +0100 (Mo, 08 Mär 2010) | 1 line
Fix typo.
........
r78922 | georg.brandl | 2010-03-13 14:41:58 +0100 (Sa, 13 Mär 2010) | 1 line
Update for new download location.
........
r78952 | georg.brandl | 2010-03-14 10:55:08 +0100 (So, 14 Mär 2010) | 1 line
#8137: add iso-8859-16 to the standard encodings table.
........
2010-03-14 07:56:14 -03:00
|
|
|
=======================
|
|
|
|
|
|
|
|
.. index::
|
|
|
|
pair: conditional; expression
|
|
|
|
pair: ternary; operator
|
2018-10-26 03:00:49 -03:00
|
|
|
single: if; conditional expression
|
|
|
|
single: else; conditional expression
|
Merged revisions 78760,78771-78773,78802,78922,78952 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78760 | georg.brandl | 2010-03-07 16:23:59 +0100 (So, 07 Mär 2010) | 1 line
#5341: more built-in vs builtin fixes.
........
r78771 | georg.brandl | 2010-03-07 21:58:31 +0100 (So, 07 Mär 2010) | 1 line
#8085: The function is called PyObject_NewVar, not PyObject_VarNew.
........
r78772 | georg.brandl | 2010-03-07 22:12:28 +0100 (So, 07 Mär 2010) | 1 line
#8039: document conditional expressions better, giving them their own section.
........
r78773 | georg.brandl | 2010-03-07 22:32:06 +0100 (So, 07 Mär 2010) | 1 line
#8044: document Py_{Enter,Leave}RecursiveCall functions.
........
r78802 | georg.brandl | 2010-03-08 17:28:40 +0100 (Mo, 08 Mär 2010) | 1 line
Fix typo.
........
r78922 | georg.brandl | 2010-03-13 14:41:58 +0100 (Sa, 13 Mär 2010) | 1 line
Update for new download location.
........
r78952 | georg.brandl | 2010-03-14 10:55:08 +0100 (So, 14 Mär 2010) | 1 line
#8137: add iso-8859-16 to the standard encodings table.
........
2010-03-14 07:56:14 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
Merged revisions 78760,78771-78773,78802,78922,78952 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78760 | georg.brandl | 2010-03-07 16:23:59 +0100 (So, 07 Mär 2010) | 1 line
#5341: more built-in vs builtin fixes.
........
r78771 | georg.brandl | 2010-03-07 21:58:31 +0100 (So, 07 Mär 2010) | 1 line
#8085: The function is called PyObject_NewVar, not PyObject_VarNew.
........
r78772 | georg.brandl | 2010-03-07 22:12:28 +0100 (So, 07 Mär 2010) | 1 line
#8039: document conditional expressions better, giving them their own section.
........
r78773 | georg.brandl | 2010-03-07 22:32:06 +0100 (So, 07 Mär 2010) | 1 line
#8044: document Py_{Enter,Leave}RecursiveCall functions.
........
r78802 | georg.brandl | 2010-03-08 17:28:40 +0100 (Mo, 08 Mär 2010) | 1 line
Fix typo.
........
r78922 | georg.brandl | 2010-03-13 14:41:58 +0100 (Sa, 13 Mär 2010) | 1 line
Update for new download location.
........
r78952 | georg.brandl | 2010-03-14 10:55:08 +0100 (So, 14 Mär 2010) | 1 line
#8137: add iso-8859-16 to the standard encodings table.
........
2010-03-14 07:56:14 -03:00
|
|
|
conditional_expression: `or_test` ["if" `or_test` "else" `expression`]
|
2013-10-06 05:28:39 -03:00
|
|
|
expression: `conditional_expression` | `lambda_expr`
|
Merged revisions 78760,78771-78773,78802,78922,78952 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78760 | georg.brandl | 2010-03-07 16:23:59 +0100 (So, 07 Mär 2010) | 1 line
#5341: more built-in vs builtin fixes.
........
r78771 | georg.brandl | 2010-03-07 21:58:31 +0100 (So, 07 Mär 2010) | 1 line
#8085: The function is called PyObject_NewVar, not PyObject_VarNew.
........
r78772 | georg.brandl | 2010-03-07 22:12:28 +0100 (So, 07 Mär 2010) | 1 line
#8039: document conditional expressions better, giving them their own section.
........
r78773 | georg.brandl | 2010-03-07 22:32:06 +0100 (So, 07 Mär 2010) | 1 line
#8044: document Py_{Enter,Leave}RecursiveCall functions.
........
r78802 | georg.brandl | 2010-03-08 17:28:40 +0100 (Mo, 08 Mär 2010) | 1 line
Fix typo.
........
r78922 | georg.brandl | 2010-03-13 14:41:58 +0100 (Sa, 13 Mär 2010) | 1 line
Update for new download location.
........
r78952 | georg.brandl | 2010-03-14 10:55:08 +0100 (So, 14 Mär 2010) | 1 line
#8137: add iso-8859-16 to the standard encodings table.
........
2010-03-14 07:56:14 -03:00
|
|
|
|
|
|
|
Conditional expressions (sometimes called a "ternary operator") have the lowest
|
|
|
|
priority of all Python operations.
|
|
|
|
|
2014-05-27 02:20:37 -03:00
|
|
|
The expression ``x if C else y`` first evaluates the condition, *C* rather than *x*.
|
|
|
|
If *C* is true, *x* is evaluated and its value is returned; otherwise, *y* is
|
Merged revisions 78760,78771-78773,78802,78922,78952 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78760 | georg.brandl | 2010-03-07 16:23:59 +0100 (So, 07 Mär 2010) | 1 line
#5341: more built-in vs builtin fixes.
........
r78771 | georg.brandl | 2010-03-07 21:58:31 +0100 (So, 07 Mär 2010) | 1 line
#8085: The function is called PyObject_NewVar, not PyObject_VarNew.
........
r78772 | georg.brandl | 2010-03-07 22:12:28 +0100 (So, 07 Mär 2010) | 1 line
#8039: document conditional expressions better, giving them their own section.
........
r78773 | georg.brandl | 2010-03-07 22:32:06 +0100 (So, 07 Mär 2010) | 1 line
#8044: document Py_{Enter,Leave}RecursiveCall functions.
........
r78802 | georg.brandl | 2010-03-08 17:28:40 +0100 (Mo, 08 Mär 2010) | 1 line
Fix typo.
........
r78922 | georg.brandl | 2010-03-13 14:41:58 +0100 (Sa, 13 Mär 2010) | 1 line
Update for new download location.
........
r78952 | georg.brandl | 2010-03-14 10:55:08 +0100 (So, 14 Mär 2010) | 1 line
#8137: add iso-8859-16 to the standard encodings table.
........
2010-03-14 07:56:14 -03:00
|
|
|
evaluated and its value is returned.
|
|
|
|
|
|
|
|
See :pep:`308` for more details about conditional expressions.
|
|
|
|
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. _lambdas:
|
2009-04-10 05:17:21 -03:00
|
|
|
.. _lambda:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
Lambdas
|
|
|
|
=======
|
|
|
|
|
|
|
|
.. index::
|
|
|
|
pair: lambda; expression
|
|
|
|
pair: lambda; form
|
|
|
|
pair: anonymous; function
|
2018-10-28 08:41:26 -03:00
|
|
|
single: : (colon); lambda expression
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2018-10-26 03:00:49 -03:00
|
|
|
lambda_expr: "lambda" [`parameter_list`] ":" `expression`
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2014-06-03 11:32:40 -03:00
|
|
|
Lambda expressions (sometimes called lambda forms) are used to create anonymous
|
2018-05-22 02:57:45 -03:00
|
|
|
functions. The expression ``lambda parameters: expression`` yields a function
|
2016-07-26 06:18:21 -03:00
|
|
|
object. The unnamed object behaves like a function object defined with:
|
|
|
|
|
|
|
|
.. code-block:: none
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2018-05-22 02:57:45 -03:00
|
|
|
def <lambda>(parameters):
|
2007-08-15 11:28:22 -03:00
|
|
|
return expression
|
|
|
|
|
|
|
|
See section :ref:`function` for the syntax of parameter lists. Note that
|
2013-10-06 05:28:39 -03:00
|
|
|
functions created with lambda expressions cannot contain statements or
|
|
|
|
annotations.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
|
|
|
|
.. _exprlists:
|
|
|
|
|
|
|
|
Expression lists
|
|
|
|
================
|
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
pair: expression; list
|
2018-10-28 08:41:26 -03:00
|
|
|
single: , (comma); expression list
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2020-09-18 04:10:15 -03:00
|
|
|
.. productionlist:: python-grammar
|
2018-07-07 17:24:46 -03:00
|
|
|
expression_list: `expression` ("," `expression`)* [","]
|
|
|
|
starred_list: `starred_item` ("," `starred_item`)* [","]
|
|
|
|
starred_expression: `expression` | (`starred_item` ",")* [`starred_item`]
|
2020-03-06 01:19:22 -04:00
|
|
|
starred_item: `assignment_expression` | "*" `or_expr`
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2023-05-04 07:04:41 -03:00
|
|
|
.. index:: pair: object; tuple
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2016-06-11 22:46:50 -03:00
|
|
|
Except when part of a list or set display, an expression list
|
|
|
|
containing at least one comma yields a tuple. The length of
|
2007-08-15 11:28:22 -03:00
|
|
|
the tuple is the number of expressions in the list. The expressions are
|
|
|
|
evaluated from left to right.
|
|
|
|
|
2016-06-11 22:46:50 -03:00
|
|
|
.. index::
|
|
|
|
pair: iterable; unpacking
|
2018-10-28 08:41:26 -03:00
|
|
|
single: * (asterisk); in expression lists
|
2016-06-11 22:46:50 -03:00
|
|
|
|
|
|
|
An asterisk ``*`` denotes :dfn:`iterable unpacking`. Its operand must be
|
|
|
|
an :term:`iterable`. The iterable is expanded into a sequence of items,
|
|
|
|
which are included in the new tuple, list, or set, at the site of
|
|
|
|
the unpacking.
|
|
|
|
|
|
|
|
.. versionadded:: 3.5
|
|
|
|
Iterable unpacking in expression lists, originally proposed by :pep:`448`.
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. index:: pair: trailing; comma
|
|
|
|
|
2024-01-30 14:40:54 -04:00
|
|
|
A trailing comma is required only to create a one-item tuple,
|
|
|
|
such as ``1,``; it is optional in all other cases.
|
|
|
|
A single expression without a
|
2007-08-15 11:28:22 -03:00
|
|
|
trailing comma doesn't create a tuple, but rather yields the value of that
|
|
|
|
expression. (To create an empty tuple, use an empty pair of parentheses:
|
|
|
|
``()``.)
|
|
|
|
|
|
|
|
|
|
|
|
.. _evalorder:
|
|
|
|
|
|
|
|
Evaluation order
|
|
|
|
================
|
|
|
|
|
|
|
|
.. index:: pair: evaluation; order
|
|
|
|
|
2007-09-07 11:15:41 -03:00
|
|
|
Python evaluates expressions from left to right. Notice that while evaluating
|
|
|
|
an assignment, the right-hand side is evaluated before the left-hand side.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
In the following lines, expressions will be evaluated in the arithmetic order of
|
|
|
|
their suffixes::
|
|
|
|
|
|
|
|
expr1, expr2, expr3, expr4
|
|
|
|
(expr1, expr2, expr3, expr4)
|
|
|
|
{expr1: expr2, expr3: expr4}
|
|
|
|
expr1 + expr2 * (expr3 - expr4)
|
Merged revisions 65437,65469,65476,65480,65502,65528,65539,65543,65558,65561-65562,65565,65591,65601,65608,65610,65639 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r65437 | georg.brandl | 2008-08-03 22:28:55 +0000 (Sun, 03 Aug 2008) | 2 lines
Note the removal of several committers.
........
r65469 | gregory.p.smith | 2008-08-04 01:03:50 +0000 (Mon, 04 Aug 2008) | 3 lines
issue1606: Add warnings to the subprocess documentation about common pitfalls
of using pipes that cause deadlocks.
........
r65476 | georg.brandl | 2008-08-04 06:29:36 +0000 (Mon, 04 Aug 2008) | 2 lines
Fix markup.
........
r65480 | georg.brandl | 2008-08-04 07:31:50 +0000 (Mon, 04 Aug 2008) | 3 lines
Clarify the meaning of the select() parameters and sync
names with docstring.
........
r65502 | gregory.p.smith | 2008-08-04 18:34:07 +0000 (Mon, 04 Aug 2008) | 2 lines
more cleanup ups of the recently added warnings in the subprocess docs.
........
r65528 | brett.cannon | 2008-08-04 21:52:25 +0000 (Mon, 04 Aug 2008) | 4 lines
Add a note about all the modules/packages changed to silence -3 warnings. More
changes are needed once some decisions are made, but this is the work up to this
point.
........
r65539 | andrew.kuchling | 2008-08-05 01:38:08 +0000 (Tue, 05 Aug 2008) | 6 lines
#3367 from Kristjan Valur Jonsson:
If a PyTokenizer_FromString() is called with an empty string, the
tokenizer's line_start member never gets initialized. Later, it is
compared with the token pointer 'a' in parsetok.c:193 and that behavior
can result in undefined behavior.
........
r65543 | andrew.kuchling | 2008-08-05 02:05:23 +0000 (Tue, 05 Aug 2008) | 1 line
#3367: revert rev. 65539: this change causes test_parser to fail
........
r65558 | georg.brandl | 2008-08-06 17:20:41 +0000 (Wed, 06 Aug 2008) | 2 lines
Fix longstringitem definition. #3505.
........
r65561 | mark.dickinson | 2008-08-06 20:12:30 +0000 (Wed, 06 Aug 2008) | 2 lines
Docstring typo
........
r65562 | mark.dickinson | 2008-08-06 21:36:57 +0000 (Wed, 06 Aug 2008) | 2 lines
Remove duplicate import
........
r65565 | andrew.kuchling | 2008-08-07 01:47:34 +0000 (Thu, 07 Aug 2008) | 1 line
Add some items
........
r65591 | georg.brandl | 2008-08-08 06:42:20 +0000 (Fri, 08 Aug 2008) | 2 lines
#3519: callee is an expression too.
........
r65601 | georg.brandl | 2008-08-08 15:34:34 +0000 (Fri, 08 Aug 2008) | 2 lines
Remove mention of backquotes in the tutorial.
........
r65608 | guido.van.rossum | 2008-08-09 14:55:34 +0000 (Sat, 09 Aug 2008) | 2 lines
Add news item about _sre.compile() re-bytecode validator.
........
r65610 | antoine.pitrou | 2008-08-09 17:27:23 +0000 (Sat, 09 Aug 2008) | 3 lines
move NEWS entry to the appropriate section (oops!)
........
r65639 | georg.brandl | 2008-08-11 10:27:31 +0000 (Mon, 11 Aug 2008) | 2 lines
#3540: fix exception name.
........
2008-08-12 05:18:18 -03:00
|
|
|
expr1(expr2, expr3, *expr4, **expr5)
|
2007-08-15 11:28:22 -03:00
|
|
|
expr3, expr4 = expr1, expr2
|
|
|
|
|
|
|
|
|
|
|
|
.. _operator-summary:
|
|
|
|
|
2012-12-25 09:45:15 -04:00
|
|
|
Operator precedence
|
|
|
|
===================
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2018-10-26 03:00:49 -03:00
|
|
|
.. index::
|
|
|
|
pair: operator; precedence
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2021-04-19 12:22:03 -03:00
|
|
|
The following table summarizes the operator precedence in Python, from highest
|
|
|
|
precedence (most binding) to lowest precedence (least binding). Operators in
|
2007-08-15 11:28:22 -03:00
|
|
|
the same box have the same precedence. Unless the syntax is explicitly given,
|
|
|
|
operators are binary. Operators in the same box group left to right (except for
|
2022-09-27 23:57:32 -03:00
|
|
|
exponentiation and conditional expressions, which group from right to left).
|
2014-05-27 02:20:37 -03:00
|
|
|
|
|
|
|
Note that comparisons, membership tests, and identity tests, all have the same
|
|
|
|
precedence and have a left-to-right chaining feature as described in the
|
|
|
|
:ref:`comparisons` section.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
2009-02-20 00:02:38 -04:00
|
|
|
|
|
|
|
+-----------------------------------------------+-------------------------------------+
|
|
|
|
| Operator | Description |
|
|
|
|
+===============================================+=====================================+
|
2021-04-19 12:22:03 -03:00
|
|
|
| ``(expressions...)``, | Binding or parenthesized |
|
|
|
|
| | expression, |
|
|
|
|
| ``[expressions...]``, | list display, |
|
|
|
|
| ``{key: value...}``, | dictionary display, |
|
|
|
|
| ``{expressions...}`` | set display |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| ``x[index]``, ``x[index:index]``, | Subscription, slicing, |
|
|
|
|
| ``x(arguments...)``, ``x.attribute`` | call, attribute reference |
|
Merged revisions 78760,78771-78773,78802,78922,78952 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r78760 | georg.brandl | 2010-03-07 16:23:59 +0100 (So, 07 Mär 2010) | 1 line
#5341: more built-in vs builtin fixes.
........
r78771 | georg.brandl | 2010-03-07 21:58:31 +0100 (So, 07 Mär 2010) | 1 line
#8085: The function is called PyObject_NewVar, not PyObject_VarNew.
........
r78772 | georg.brandl | 2010-03-07 22:12:28 +0100 (So, 07 Mär 2010) | 1 line
#8039: document conditional expressions better, giving them their own section.
........
r78773 | georg.brandl | 2010-03-07 22:32:06 +0100 (So, 07 Mär 2010) | 1 line
#8044: document Py_{Enter,Leave}RecursiveCall functions.
........
r78802 | georg.brandl | 2010-03-08 17:28:40 +0100 (Mo, 08 Mär 2010) | 1 line
Fix typo.
........
r78922 | georg.brandl | 2010-03-13 14:41:58 +0100 (Sa, 13 Mär 2010) | 1 line
Update for new download location.
........
r78952 | georg.brandl | 2010-03-14 10:55:08 +0100 (So, 14 Mär 2010) | 1 line
#8137: add iso-8859-16 to the standard encodings table.
........
2010-03-14 07:56:14 -03:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2022-05-19 12:05:04 -03:00
|
|
|
| :keyword:`await x <await>` | Await expression |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| ``**`` | Exponentiation [#]_ |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| ``+x``, ``-x``, ``~x`` | Positive, negative, bitwise NOT |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| ``*``, ``@``, ``/``, ``//``, ``%`` | Multiplication, matrix |
|
|
|
|
| | multiplication, division, floor |
|
|
|
|
| | division, remainder [#]_ |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| ``+``, ``-`` | Addition and subtraction |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| ``<<``, ``>>`` | Shifts |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
|
|
|
| ``&`` | Bitwise AND |
|
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| ``^`` | Bitwise XOR |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| ``|`` | Bitwise OR |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| :keyword:`in`, :keyword:`not in`, | Comparisons, including membership |
|
|
|
|
| :keyword:`is`, :keyword:`is not`, ``<``, | tests and identity tests |
|
|
|
|
| ``<=``, ``>``, ``>=``, ``!=``, ``==`` | |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2022-05-19 12:05:04 -03:00
|
|
|
| :keyword:`not x <not>` | Boolean NOT |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| :keyword:`and` | Boolean AND |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| :keyword:`or` | Boolean OR |
|
2015-05-21 12:50:30 -03:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| :keyword:`if <if_expr>` -- :keyword:`!else` | Conditional expression |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
2021-04-19 12:22:03 -03:00
|
|
|
| :keyword:`lambda` | Lambda expression |
|
|
|
|
+-----------------------------------------------+-------------------------------------+
|
|
|
|
| ``:=`` | Assignment expression |
|
2009-02-20 00:02:38 -04:00
|
|
|
+-----------------------------------------------+-------------------------------------+
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
.. rubric:: Footnotes
|
|
|
|
|
|
|
|
.. [#] While ``abs(x%y) < abs(y)`` is true mathematically, for floats it may not be
|
|
|
|
true numerically due to roundoff. For example, and assuming a platform on which
|
|
|
|
a Python float is an IEEE 754 double-precision number, in order that ``-1e-100 %
|
|
|
|
1e100`` have the same sign as ``1e100``, the computed result is ``-1e-100 +
|
2010-12-01 11:32:43 -04:00
|
|
|
1e100``, which is numerically exactly equal to ``1e100``. The function
|
|
|
|
:func:`math.fmod` returns a result whose sign matches the sign of the
|
2007-08-15 11:28:22 -03:00
|
|
|
first argument instead, and so returns ``-1e-100`` in this case. Which approach
|
|
|
|
is more appropriate depends on the application.
|
|
|
|
|
|
|
|
.. [#] If x is very close to an exact integer multiple of y, it's possible for
|
2007-09-07 11:15:41 -03:00
|
|
|
``x//y`` to be one larger than ``(x-x%y)//y`` due to rounding. In such
|
2007-08-15 11:28:22 -03:00
|
|
|
cases, Python returns the latter result, in order to preserve that
|
|
|
|
``divmod(x,y)[0] * y + x % y`` be very close to ``x``.
|
|
|
|
|
2015-09-23 02:28:13 -03:00
|
|
|
.. [#] The Unicode standard distinguishes between :dfn:`code points`
|
|
|
|
(e.g. U+0041) and :dfn:`abstract characters` (e.g. "LATIN CAPITAL LETTER A").
|
|
|
|
While most abstract characters in Unicode are only represented using one
|
|
|
|
code point, there is a number of abstract characters that can in addition be
|
|
|
|
represented using a sequence of more than one code point. For example, the
|
|
|
|
abstract character "LATIN CAPITAL LETTER C WITH CEDILLA" can be represented
|
|
|
|
as a single :dfn:`precomposed character` at code position U+00C7, or as a
|
|
|
|
sequence of a :dfn:`base character` at code position U+0043 (LATIN CAPITAL
|
|
|
|
LETTER C), followed by a :dfn:`combining character` at code position U+0327
|
|
|
|
(COMBINING CEDILLA).
|
|
|
|
|
|
|
|
The comparison operators on strings compare at the level of Unicode code
|
|
|
|
points. This may be counter-intuitive to humans. For example,
|
|
|
|
``"\u00C7" == "\u0043\u0327"`` is ``False``, even though both strings
|
|
|
|
represent the same abstract character "LATIN CAPITAL LETTER C WITH CEDILLA".
|
|
|
|
|
|
|
|
To compare strings at the level of abstract characters (that is, in a way
|
|
|
|
intuitive to humans), use :func:`unicodedata.normalize`.
|
2007-08-16 21:24:54 -03:00
|
|
|
|
2009-01-03 17:18:54 -04:00
|
|
|
.. [#] Due to automatic garbage-collection, free lists, and the dynamic nature of
|
Merged revisions 64475,64544-64545,64550,64557-64558,64565,64570,64577,64582-64583,64585,64590,64592-64593,64625,64630,64638,64647,64655-64656,64663-64664 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r64475 | raymond.hettinger | 2008-06-22 22:29:28 -0500 (Sun, 22 Jun 2008) | 1 line
Issue 3161: Missing import and test.
........
r64544 | georg.brandl | 2008-06-26 16:12:55 -0500 (Thu, 26 Jun 2008) | 2 lines
Use newer versions of externals.
........
r64545 | benjamin.peterson | 2008-06-26 16:23:30 -0500 (Thu, 26 Jun 2008) | 1 line
add a htmlview directive
........
r64550 | brett.cannon | 2008-06-26 19:32:16 -0500 (Thu, 26 Jun 2008) | 2 lines
Ignore .pyc and .pyo files.
........
r64557 | mark.dickinson | 2008-06-27 05:11:52 -0500 (Fri, 27 Jun 2008) | 3 lines
Remove trailing 'L's from numerator and denominator in the
repr() of a Fraction instance.
........
r64558 | mark.dickinson | 2008-06-27 06:03:21 -0500 (Fri, 27 Jun 2008) | 2 lines
Add Jean Brouwers for his work on math.sum
........
r64565 | raymond.hettinger | 2008-06-27 16:34:24 -0500 (Fri, 27 Jun 2008) | 1 line
Fix whitespace in example code.
........
r64570 | hyeshik.chang | 2008-06-27 20:04:31 -0500 (Fri, 27 Jun 2008) | 8 lines
Give information for compililation of _multiprocessing.SemLock on FreeBSD:
FreeBSD's P1003.1b semaphore support is highly experimental and
it's disabled by default. Even if a user loads the experimental
kernel module manually, _multiprocessing doesn't work correctly due
to several known incompatibilities around sem_unlink and sem_getvalue,
yet.
........
r64577 | raymond.hettinger | 2008-06-28 17:16:53 -0500 (Sat, 28 Jun 2008) | 1 line
Issue 3230: Do not the set specific size macro.
........
r64582 | benjamin.peterson | 2008-06-28 18:06:05 -0500 (Sat, 28 Jun 2008) | 2 lines
convert test_audioop to unittest. Thanks to Giampaolo Rodola.
........
r64583 | benjamin.peterson | 2008-06-28 18:06:49 -0500 (Sat, 28 Jun 2008) | 1 line
rewrap
........
r64585 | benjamin.peterson | 2008-06-28 18:35:31 -0500 (Sat, 28 Jun 2008) | 1 line
fix typo
........
r64590 | benjamin.peterson | 2008-06-29 08:43:07 -0500 (Sun, 29 Jun 2008) | 1 line
reinstate the ending backtick. thanks Nick :)
........
r64592 | vinay.sajip | 2008-06-29 16:25:28 -0500 (Sun, 29 Jun 2008) | 2 lines
Removed out-of-date comment in _install_handlers and
used issubclass in place of equality comparison of classes.
........
r64593 | vinay.sajip | 2008-06-29 16:27:15 -0500 (Sun, 29 Jun 2008) | 1 line
Updated to reflect change in logging.config to remove out-of-date comment in _install_handlers and the use of issubclass in place of equality comparison of classes.
........
r64625 | georg.brandl | 2008-07-01 14:59:00 -0500 (Tue, 01 Jul 2008) | 2 lines
Add a link to PEP 324.
........
r64630 | georg.brandl | 2008-07-01 15:18:10 -0500 (Tue, 01 Jul 2008) | 2 lines
#3216: fix Execute's parameter description.
........
r64638 | georg.brandl | 2008-07-01 15:50:02 -0500 (Tue, 01 Jul 2008) | 2 lines
#1410739: add a footnote about "is" and "unusual" behavior.
........
r64647 | benjamin.peterson | 2008-07-01 18:33:06 -0500 (Tue, 01 Jul 2008) | 1 line
add ABC to the glossary
........
r64655 | mark.dickinson | 2008-07-02 04:37:01 -0500 (Wed, 02 Jul 2008) | 7 lines
Replace occurrences of '\d' with '[0-9]' in Decimal regex, to make sure
that the behaviour of Decimal doesn't change if/when re.UNICODE becomes
assumed in Python 3.0.
Also add a check that alternative Unicode digits (e.g. u'\N{FULLWIDTH
DIGIT ONE}') are *not* accepted in a numeric string.
........
r64656 | nick.coghlan | 2008-07-02 08:09:19 -0500 (Wed, 02 Jul 2008) | 1 line
Issue 3190: pydoc now hides module __package__ attributes
........
r64663 | jesse.noller | 2008-07-02 11:44:09 -0500 (Wed, 02 Jul 2008) | 1 line
Reenable the manager tests with Amaury's threading fix
........
r64664 | facundo.batista | 2008-07-02 11:52:55 -0500 (Wed, 02 Jul 2008) | 4 lines
Issue #449227: Now with the rlcompleter module, callable objects are
added a '(' when completed.
........
2008-07-02 17:22:54 -03:00
|
|
|
descriptors, you may notice seemingly unusual behaviour in certain uses of
|
|
|
|
the :keyword:`is` operator, like those involving comparisons between instance
|
|
|
|
methods, or constants. Check their documentation for more info.
|
2009-02-20 00:02:38 -04:00
|
|
|
|
|
|
|
.. [#] The power operator ``**`` binds less tightly than an arithmetic or
|
|
|
|
bitwise unary operator on its right, that is, ``2**-1`` is ``0.5``.
|
2021-05-02 14:29:15 -03:00
|
|
|
|
|
|
|
.. [#] The ``%`` operator is also used for string formatting; the same
|
|
|
|
precedence applies.
|