summaryrefslogtreecommitdiffstats
path: root/Doc/reference
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-10-27 20:24:45 (GMT)
committerGeorg Brandl <georg@python.org>2009-10-27 20:24:45 (GMT)
commit628e6f908edcae8e2785600fc1f7f8effa3132d8 (patch)
treeabfa8eaa745c5a4cb33a9114ad8a210e42c025fe /Doc/reference
parent1e8cbe36cc2455296d38f927d1ab54b93d894881 (diff)
downloadcpython-628e6f908edcae8e2785600fc1f7f8effa3132d8.zip
cpython-628e6f908edcae8e2785600fc1f7f8effa3132d8.tar.gz
cpython-628e6f908edcae8e2785600fc1f7f8effa3132d8.tar.bz2
Merged revisions 75797 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k ................ r75797 | georg.brandl | 2009-10-27 16:28:25 +0100 (Di, 27 Okt 2009) | 129 lines 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. ........ ................
Diffstat (limited to 'Doc/reference')
-rw-r--r--Doc/reference/datamodel.rst37
-rw-r--r--Doc/reference/executionmodel.rst2
-rw-r--r--Doc/reference/expressions.rst21
-rw-r--r--Doc/reference/simple_stmts.rst16
4 files changed, 47 insertions, 29 deletions
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 971c06e..36fc575 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -59,13 +59,16 @@ Objects are never explicitly destroyed; however, when they become unreachable
they may be garbage-collected. An implementation is allowed to postpone garbage
collection or omit it altogether --- it is a matter of implementation quality
how garbage collection is implemented, as long as no objects are collected that
-are still reachable. (Implementation note: CPython currently uses a
-reference-counting scheme with (optional) delayed detection of cyclically linked
-garbage, which collects most objects as soon as they become unreachable, but is
-not guaranteed to collect garbage containing circular references. See the
-documentation of the :mod:`gc` module for information on controlling the
-collection of cyclic garbage. Other implementations act differently and CPython
-may change.)
+are still reachable.
+
+.. impl-detail::
+
+ CPython currently uses a reference-counting scheme with (optional) delayed
+ detection of cyclically linked garbage, which collects most objects as soon
+ as they become unreachable, but is not guaranteed to collect garbage
+ containing circular references. See the documentation of the :mod:`gc`
+ module for information on controlling the collection of cyclic garbage.
+ Other implementations act differently and CPython may change.
Note that the use of the implementation's tracing or debugging facilities may
keep objects alive that would normally be collectable. Also note that catching
@@ -1469,15 +1472,15 @@ Notes on using *__slots__*
*__slots__*; otherwise, the class attribute would overwrite the descriptor
assignment.
+* The action of a *__slots__* declaration is limited to the class where it is
+ defined. As a result, subclasses will have a *__dict__* unless they also define
+ *__slots__* (which must only contain names of any *additional* slots).
+
* If a class defines a slot also defined in a base class, the instance variable
defined by the base class slot is inaccessible (except by retrieving its
descriptor directly from the base class). This renders the meaning of the
program undefined. In the future, a check may be added to prevent this.
-* The action of a *__slots__* declaration is limited to the class where it is
- defined. As a result, subclasses will have a *__dict__* unless they also define
- *__slots__*.
-
* Nonempty *__slots__* does not work for classes derived from "variable-length"
built-in types such as :class:`int`, :class:`str` and :class:`tuple`.
@@ -1714,12 +1717,16 @@ implemented as an iteration through a sequence. However, container objects can
supply the following special method with a more efficient implementation, which
also does not require the object be a sequence.
-
.. method:: object.__contains__(self, item)
- Called to implement membership test operators. Should return true if *item* is
- in *self*, false otherwise. For mapping objects, this should consider the keys
- of the mapping rather than the values or the key-item pairs.
+ Called to implement membership test operators. Should return true if *item*
+ is in *self*, false otherwise. For mapping objects, this should consider the
+ keys of the mapping rather than the values or the key-item pairs.
+
+ For objects that don't define :meth:`__contains__`, the membership test first
+ tries iteration via :meth:`__iter__`, then the old sequence iteration
+ protocol via :meth:`__getitem__`, see :ref:`this section in the language
+ reference <membership-test-details>`.
.. _numeric-types:
diff --git a/Doc/reference/executionmodel.rst b/Doc/reference/executionmodel.rst
index 68ee654..90791d2 100644
--- a/Doc/reference/executionmodel.rst
+++ b/Doc/reference/executionmodel.rst
@@ -129,7 +129,7 @@ the built-in module :mod:`builtins`; when in any other module,
itself. ``__builtins__`` can be set to a user-created dictionary to create a
weak form of restricted execution.
-.. note::
+.. impl-detail::
Users should not touch ``__builtins__``; it is strictly an implementation
detail. Users wanting to override values in the built-in namespace should
diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst
index cdb802a..d074ebb 100644
--- a/Doc/reference/expressions.rst
+++ b/Doc/reference/expressions.rst
@@ -639,13 +639,13 @@ 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.
-.. note::
+.. impl-detail::
- 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 case for
- functions implemented in C that use :cfunc:`PyArg_ParseTuple` to parse their
- arguments.
+ 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
+ case for functions implemented in C that use :cfunc:`PyArg_ParseTuple` to
+ parse their arguments.
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
@@ -1053,6 +1053,8 @@ cross-type comparison is not supported, the comparison method returns
supported cross-type comparisons and unsupported comparisons. For example,
``Decimal(2) == 2`` and `2 == float(2)`` but ``Decimal(2) != float(2)``.
+.. _membership-test-details:
+
The operators :keyword:`in` and :keyword:`not in` test for membership. ``x in
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 set types
@@ -1069,7 +1071,12 @@ return ``True``.
For user-defined classes which define the :meth:`__contains__` method, ``x in
y`` is true if and only if ``y.__contains__(x)`` is true.
-For user-defined classes which do not define :meth:`__contains__` and do define
+For user-defined classes which do not define :meth:`__contains__` but do define
+:meth:`__iter__`, ``x in y`` is true if some value ``z`` with ``x == z`` is
+produced while iterating over ``y``. If an exception is raised during the
+iteration, it is as if :keyword:`in` raised that exception.
+
+Lastly, the old-style iteration protocol is tried: if a class defines
:meth:`__getitem__`, ``x in y`` is true if and only if there is a non-negative
integer index *i* such that ``x == y[i]``, and all lower integer indices do not
raise :exc:`IndexError` exception. (If any other exception is raised, it is as
diff --git a/Doc/reference/simple_stmts.rst b/Doc/reference/simple_stmts.rst
index 8c95623..b3fc891 100644
--- a/Doc/reference/simple_stmts.rst
+++ b/Doc/reference/simple_stmts.rst
@@ -236,9 +236,11 @@ Assignment of an object to a single target is recursively defined as follows.
from the length of the assigned sequence, thus changing the length of the
target sequence, if the object allows it.
-(In the current implementation, the syntax for targets is taken to be the same
-as for expressions, and invalid syntax is rejected during the code generation
-phase, causing less detailed error messages.)
+.. impl-detail::
+
+ In the current implementation, the syntax for targets is taken to be the same
+ as for expressions, and invalid syntax is rejected during the code generation
+ phase, causing less detailed error messages.
WARNING: Although the definition of assignment implies that overlaps between the
left-hand side and the right-hand side are 'safe' (for example ``a, b = b, a``
@@ -935,9 +937,11 @@ Names listed in a :keyword:`global` statement must not be defined as formal
parameters or in a :keyword:`for` loop control target, :keyword:`class`
definition, function definition, or :keyword:`import` statement.
-(The current implementation does not enforce the latter two restrictions, but
-programs should not abuse this freedom, as future implementations may enforce
-them or silently change the meaning of the program.)
+.. impl-detail::
+
+ The current implementation does not enforce the latter two restrictions, but
+ programs should not abuse this freedom, as future implementations may enforce
+ them or silently change the meaning of the program.
.. index::
builtin: exec