summaryrefslogtreecommitdiffstats
path: root/Doc/reference
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/reference')
-rw-r--r--Doc/reference/compound_stmts.rst45
-rw-r--r--Doc/reference/datamodel.rst23
-rw-r--r--Doc/reference/expressions.rst25
-rw-r--r--Doc/reference/simple_stmts.rst77
4 files changed, 108 insertions, 62 deletions
diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst
index 927930a..ffd7423 100644
--- a/Doc/reference/compound_stmts.rst
+++ b/Doc/reference/compound_stmts.rst
@@ -78,7 +78,10 @@ on a separate line for clarity.
The :keyword:`if` statement
===========================
-.. index:: statement: if
+.. index::
+ statement: if
+ keyword: elif
+ keyword: else
keyword: elif
keyword: else
@@ -105,6 +108,7 @@ The :keyword:`while` statement
statement: while
keyword: else
pair: loop; statement
+ keyword: else
The :keyword:`while` statement is used for repeated execution as long as an
expression is true:
@@ -139,6 +143,9 @@ The :keyword:`for` statement
keyword: else
pair: target; list
pair: loop; statement
+ keyword: in
+ keyword: else
+ pair: target; list
object: sequence
The :keyword:`for` statement is used to iterate over the elements of a sequence
@@ -208,7 +215,10 @@ returns the list ``[0, 1, 2]``.
The :keyword:`try` statement
============================
-.. index:: statement: try
+.. index::
+ statement: try
+ keyword: except
+ keyword: finally
.. index:: keyword: except
The :keyword:`try` statement specifies exception handlers and/or cleanup code
@@ -223,7 +233,8 @@ for a group of statements:
try2_stmt: "try" ":" `suite`
: "finally" ":" `suite`
-The :keyword:`except` clause(s) specify one or more exception handlers. When no
+
+The :keyword:`except` clause(s) specify one or more exception handlers. When no
exception occurs in the :keyword:`try` clause, no exception handler is executed.
When an exception occurs in the :keyword:`try` suite, a search for an exception
handler is started. This search inspects the except clauses in turn until one
@@ -379,6 +390,10 @@ The execution of the :keyword:`with` statement proceeds as follows:
location for the kind of exit that was taken.
+ In Python 2.5, the :keyword:`with` statement is only allowed when the
+ ``with_statement`` feature has been enabled. It is always enabled in
+ Python 2.6.
+
.. seealso::
:pep:`0343` - The "with" statement
@@ -393,8 +408,10 @@ Function definitions
====================
.. index::
- pair: function; definition
statement: def
+ pair: function; definition
+ pair: function; name
+ pair: name; binding
object: user-defined function
object: function
pair: function; name
@@ -513,13 +530,13 @@ Class definitions
=================
.. index::
- pair: class; definition
- statement: class
object: class
- single: inheritance
+ statement: class
+ pair: class; definition
pair: class; name
pair: name; binding
pair: execution; frame
+ single: inheritance
A class definition defines a class object (see section :ref:`types`):
@@ -554,13 +571,13 @@ is equivalent to ::
Foo = f1(arg)(f2(Foo))
**Programmer's note:** Variables defined in the class definition are class
-variables; they are shared by all instances. To define instance variables, they
-must be given a value in the :meth:`__init__` method or in another method. Both
-class and instance variables are accessible through the notation
-"``self.name``", and an instance variable hides a class variable with the same
-name when accessed in this way. Class variables with immutable values can be
-used as defaults for instance variables. Descriptors can be used to create
-instance variables with different implementation details.
+can be set in a method with ``self.name = value``. Both class and instance
+variables are accessible through the notation "``self.name``", and an instance
+variable hides a class variable with the same name when accessed in this way.
+Class variables can be used as defaults for instance variables, but using
+mutable values there can lead to unexpected results. For :term:`new-style
+class`\es, descriptors can be used to create instance variables with different
+implementation details.
.. XXX add link to descriptor docs above
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 3c7f8e6..6acd25a 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -1011,16 +1011,17 @@ implemented before for compatibility concerns, like the method resolution order
in case of multiple inheritance.
This manual is not up-to-date with respect to new-style classes. For now,
-please see http://www.python.org/doc/newstyle.html for more information.
+please see http://www.python.org/doc/newstyle/ for more information.
.. index::
- single: class
- single: class
- single: class
+ single: class; new-style
+ single: class; classic
+ single: class; old-style
The plan is to eventually drop old-style classes, leaving only the semantics of
new-style classes. This change will probably only be feasible in Python 3.0.
-new-style classic old-style
+
+XXX Remove old style classes from docs
.. _specialnames:
@@ -1902,6 +1903,18 @@ For more information on context managers, see :ref:`typecontextmanager`.
.. rubric:: Footnotes
+.. [#] Since Python 2.2, a gradual merging of types and classes has been started that
+ makes this and a few other assertions made in this manual not 100% accurate and
+ complete: for example, it *is* now possible in some cases to change an object's
+ type, under certain controlled conditions. Until this manual undergoes
+ extensive revision, it must now be taken as authoritative only regarding
+ "classic classes", that are still the default, for compatibility purposes, in
+ Python 2.2 and 2.3. For more information, see
+ http://www.python.org/doc/newstyle/.
+
+.. [#] This, and other statements, are only roughly true for instances of new-style
+ classes.
+
.. [#] A descriptor can define any combination of :meth:`__get__`,
:meth:`__set__` and :meth:`__delete__`. If it does not define :meth:`__get__`,
then accessing the attribute even on an instance will return the descriptor
diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst
index cf95636..380d265 100644
--- a/Doc/reference/expressions.rst
+++ b/Doc/reference/expressions.rst
@@ -769,7 +769,7 @@ float result is delivered. For example, ``10**2`` returns ``100``, but
Raising ``0.0`` to a negative power results in a :exc:`ZeroDivisionError`.
Raising a negative number to a fractional power results in a :class:`complex`
-number. (Since Python 2.6. In earlier versions it raised a :exc:`ValueError`.)
+number. (In earlier versions it raised a :exc:`ValueError`.)
.. _unary:
@@ -779,9 +779,9 @@ Unary arithmetic operations
.. index::
triple: unary; arithmetic; operation
- triple: unary; bit-wise; operation
+ triple: unary; bitwise; operation
-All unary arithmetic (and bit-wise) operations have the same priority:
+All unary arithmetic (and bitwise) operations have the same priority:
.. productionlist::
u_expr: `power` | "-" `u_expr` | "+" `u_expr` | "~" `u_expr`
@@ -798,9 +798,10 @@ The unary ``+`` (plus) operator yields its numeric argument unchanged.
.. index:: single: inversion
-The unary ``~`` (invert) operator yields the bit-wise inversion of its integer
-argument. The bit-wise inversion of ``x`` is defined as ``-(x+1)``. It only
-applies to integral numbers.
+
+The unary ``~`` (invert) operator yields the bitwise inversion of its plain or
+long integer argument. The bitwise inversion of ``x`` is defined as
+``-(x+1)``. It only applies to integral numbers.
.. index:: exception: TypeError
@@ -905,10 +906,10 @@ by *n* bits is defined as multiplication with ``pow(2,n)``.
.. _bitwise:
-Binary bit-wise operations
-==========================
+Binary bitwise operations
+=========================
-.. index:: triple: binary; bit-wise; operation
+.. index:: triple: binary; bitwise; operation
Each of the three bitwise operations has a different priority level:
@@ -917,20 +918,20 @@ Each of the three bitwise operations has a different priority level:
xor_expr: `and_expr` | `xor_expr` "^" `and_expr`
or_expr: `xor_expr` | `or_expr` "|" `xor_expr`
-.. index:: pair: bit-wise; and
+.. index:: pair: bitwise; and
The ``&`` operator yields the bitwise AND of its arguments, which must be
integers.
.. index::
- pair: bit-wise; xor
+ pair: bitwise; xor
pair: exclusive; or
The ``^`` operator yields the bitwise XOR (exclusive OR) of its arguments, which
must be integers.
.. index::
- pair: bit-wise; or
+ pair: bitwise; or
pair: inclusive; or
The ``|`` operator yields the bitwise (inclusive) OR of its arguments, which
diff --git a/Doc/reference/simple_stmts.rst b/Doc/reference/simple_stmts.rst
index a822006..1dc49f3 100644
--- a/Doc/reference/simple_stmts.rst
+++ b/Doc/reference/simple_stmts.rst
@@ -33,7 +33,9 @@ simple statements is:
Expression statements
=====================
-.. index:: pair: expression; statement
+.. index::
+ pair: expression; statement
+ pair: expression; list
.. index:: pair: expression; list
Expression statements are used (mostly interactively) to compute and write a
@@ -327,7 +329,9 @@ is determined when the interpreter starts.
The :keyword:`pass` statement
=============================
-.. index:: statement: pass
+.. index::
+ statement: pass
+ pair: null; operation
pair: null; operation
.. productionlist::
@@ -347,9 +351,10 @@ code needs to be executed, for example::
The :keyword:`del` statement
============================
-.. index:: statement: del
- pair: deletion; target
- triple: deletion; target; list
+.. index::
+ statement: del
+ pair: deletion; target
+ triple: deletion; target; list
.. productionlist::
del_stmt: "del" `target_list`
@@ -386,9 +391,10 @@ the sliced object).
The :keyword:`return` statement
===============================
-.. index:: statement: return
- pair: function; definition
- pair: class; definition
+.. index::
+ statement: return
+ pair: function; definition
+ pair: class; definition
.. productionlist::
return_stmt: "return" [`expression_list`]
@@ -418,23 +424,34 @@ raised.
The :keyword:`yield` statement
==============================
+.. index::
+ statement: yield
+ single: generator; function
+ single: generator; iterator
+ single: function; generator
+ exception: StopIteration
+
.. productionlist::
yield_stmt: `yield_expression`
-The yield statement is nothing but a yield expression used as a statement,
-see :ref:`yieldexpr`.
-
+The :keyword:`yield` statement is only used when defining a generator function,
+and is only used in the body of the generator function. Using a :keyword:`yield`
+statement in a function definition is sufficient to cause that definition to
+create a generator function instead of a normal function.
+>>>>>>> .merge-right.r59773
.. _raise:
The :keyword:`raise` statement
==============================
-.. index:: statement: raise
- pair: raising; exception
+.. index::
+ statement: raise
+ single: exception
+ pair: raising; exception
.. productionlist::
- raise_stmt: "raise" [`expression` ["from" `expression`]]
+ raise_stmt: "raise" [`expression` ["," `expression` ["," `expression`]]]
If no expressions are present, :keyword:`raise` re-raises the last exception
that was active in the current scope. If no exception is active in the current
@@ -476,10 +493,11 @@ and information about handling exceptions is in section :ref:`try`.
The :keyword:`break` statement
==============================
-.. index:: statement: break
- statement: for
- statement: while
- pair: loop; statement
+.. index::
+ statement: break
+ statement: for
+ statement: while
+ pair: loop; statement
.. productionlist::
break_stmt: "break"
@@ -509,11 +527,12 @@ really leaving the loop.
The :keyword:`continue` statement
=================================
-.. index:: statement: continue
- statement: for
- statement: while
- pair: loop; statement
- keyword: finally
+.. index::
+ statement: continue
+ statement: for
+ statement: while
+ pair: loop; statement
+ keyword: finally
.. productionlist::
continue_stmt: "continue"
@@ -631,6 +650,7 @@ raise a :exc:`SyntaxError`.
.. index::
keyword: from
+ statement: from
triple: hierarchical; module; names
single: packages
single: __init__.py
@@ -731,13 +751,13 @@ after the script is executed.
The :keyword:`global` statement
===============================
-.. index:: statement: global
+.. index::
+ statement: global
+ triple: global; name; binding
.. productionlist::
global_stmt: "global" `identifier` ("," `identifier`)*
-.. index:: triple: global; name; binding
-
The :keyword:`global` statement is a declaration which holds for the entire
current code block. It means that the listed identifiers are to be interpreted
as globals. It would be impossible to assign to a global variable without
@@ -789,11 +809,6 @@ because the default behavior for binding is to search the local namespace
first. The statement allows encapsulated code to rebind variables outside of
the local scope besides the global (module) scope.
-.. note::
-
- The outer scope for :keyword:`nonlocal` statements cannot be the module
- scope.
-
.. XXX not implemented
The :keyword:`nonlocal` statement may prepend an assignment or augmented
assignment, but not an expression.