Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
aa7886dd
Kaydet (Commit)
aa7886dd
authored
May 27, 2014
tarafından
Raymond Hettinger
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Issue 21439: Minor issues in the reference manual.
(Contributed by Feliks Kluzniak.)
üst
c7ceefc1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
102 additions
and
84 deletions
+102
-84
compound_stmts.rst
Doc/reference/compound_stmts.rst
+18
-10
datamodel.rst
Doc/reference/datamodel.rst
+2
-2
executionmodel.rst
Doc/reference/executionmodel.rst
+6
-6
expressions.rst
Doc/reference/expressions.rst
+41
-39
simple_stmts.rst
Doc/reference/simple_stmts.rst
+35
-27
No files found.
Doc/reference/compound_stmts.rst
Dosyayı görüntüle @
aa7886dd
...
@@ -22,14 +22,14 @@ also syntactically compound statements.
...
@@ -22,14 +22,14 @@ also syntactically compound statements.
single: clause
single: clause
single: suite
single: suite
Compound statements consist
of one or more 'clauses.' A clause consists of a
A compound statement consists
of one or more 'clauses.' A clause consists of a
header and a 'suite.' The clause headers of a particular compound statement are
header and a 'suite.' The clause headers of a particular compound statement are
all at the same indentation level. Each clause header begins with a uniquely
all at the same indentation level. Each clause header begins with a uniquely
identifying keyword and ends with a colon. A suite is a group of statements
identifying keyword and ends with a colon. A suite is a group of statements
controlled by a clause. A suite can be one or more semicolon-separated simple
controlled by a clause. A suite can be one or more semicolon-separated simple
statements on the same line as the header, following the header's colon, or it
statements on the same line as the header, following the header's colon, or it
can be one or more indented statements on subsequent lines. Only the latter
can be one or more indented statements on subsequent lines. Only the latter
form of suite can contain nested compound statements; the following is illegal,
form of
a
suite can contain nested compound statements; the following is illegal,
mostly because it wouldn't be clear to which :keyword:`if` clause a following
mostly because it wouldn't be clear to which :keyword:`if` clause a following
:keyword:`else` clause would belong::
:keyword:`else` clause would belong::
...
@@ -156,8 +156,8 @@ The :keyword:`for` statement is used to iterate over the elements of a sequence
...
@@ -156,8 +156,8 @@ The :keyword:`for` statement is used to iterate over the elements of a sequence
The expression list is evaluated once; it should yield an iterable object. An
The expression list is evaluated once; it should yield an iterable object. An
iterator is created for the result of the ``expression_list``. The suite is
iterator is created for the result of the ``expression_list``. The suite is
then executed once for each item provided by the iterator, in the order
of
then executed once for each item provided by the iterator, in the order
returned
ascending indices
. Each item in turn is assigned to the target list using the
by the iterator
. Each item in turn is assigned to the target list using the
standard rules for assignments (see :ref:`assignment`), and then the suite is
standard rules for assignments (see :ref:`assignment`), and then the suite is
executed. When the items are exhausted (which is immediately when the sequence
executed. When the items are exhausted (which is immediately when the sequence
is empty or an iterator raises a :exc:`StopIteration` exception), the suite in
is empty or an iterator raises a :exc:`StopIteration` exception), the suite in
...
@@ -170,17 +170,25 @@ the :keyword:`else` clause, if present, is executed, and the loop terminates.
...
@@ -170,17 +170,25 @@ the :keyword:`else` clause, if present, is executed, and the loop terminates.
A :keyword:`break` statement executed in the first suite terminates the loop
A :keyword:`break` statement executed in the first suite terminates the loop
without executing the :keyword:`else` clause's suite. A :keyword:`continue`
without executing the :keyword:`else` clause's suite. A :keyword:`continue`
statement executed in the first suite skips the rest of the suite and continues
statement executed in the first suite skips the rest of the suite and continues
with the next item, or with the :keyword:`else` clause if there
wa
s no next
with the next item, or with the :keyword:`else` clause if there
i
s no next
item.
item.
The suite may assign to the variable(s) in the target list; this does not affect
The for-loop makes assignments to the variables(s) in the target list.
the next item assigned to it.
This overwrites all previous assignments to those variables including
those made in the suite of the for-loop::
for i in range(10):
print(i)
i = 5 # this will not affect the for-loop
# be i will be overwritten with the next
# index in the range
.. index::
.. index::
builtin: range
builtin: range
Names in the target list are not deleted when the loop is finished, but if the
Names in the target list are not deleted when the loop is finished, but if the
sequence is empty,
it
will not have been assigned to at all by the loop. Hint:
sequence is empty,
they
will not have been assigned to at all by the loop. Hint:
the built-in function :func:`range` returns an iterator of integers suitable to
the built-in function :func:`range` returns an iterator of integers suitable to
emulate the effect of Pascal's ``for i := a to b do``; e.g., ``list(range(3))``
emulate the effect of Pascal's ``for i := a to b do``; e.g., ``list(range(3))``
returns the list ``[0, 1, 2]``.
returns the list ``[0, 1, 2]``.
...
@@ -284,7 +292,7 @@ keeping all locals in that frame alive until the next garbage collection occurs.
...
@@ -284,7 +292,7 @@ keeping all locals in that frame alive until the next garbage collection occurs.
object: traceback
object: traceback
Before an except clause's suite is executed, details about the exception are
Before an except clause's suite is executed, details about the exception are
stored in the :mod:`sys` module and can be access via :func:`sys.exc_info`.
stored in the :mod:`sys` module and can be access
ed
via :func:`sys.exc_info`.
:func:`sys.exc_info` returns a 3-tuple consisting of the exception class, the
:func:`sys.exc_info` returns a 3-tuple consisting of the exception class, the
exception instance and a traceback object (see section :ref:`types`) identifying
exception instance and a traceback object (see section :ref:`types`) identifying
the point in the program where the exception occurred. :func:`sys.exc_info`
the point in the program where the exception occurred. :func:`sys.exc_info`
...
@@ -461,7 +469,7 @@ A function definition defines a user-defined function object (see section
...
@@ -461,7 +469,7 @@ A function definition defines a user-defined function object (see section
decorator: "@" `dotted_name` ["(" [`parameter_list` [","]] ")"] NEWLINE
decorator: "@" `dotted_name` ["(" [`parameter_list` [","]] ")"] NEWLINE
dotted_name: `identifier` ("." `identifier`)*
dotted_name: `identifier` ("." `identifier`)*
parameter_list: (`defparameter` ",")*
parameter_list: (`defparameter` ",")*
:
(
"*" [`parameter`] ("," `defparameter`)* ["," "**" `parameter`]
:
|
"*" [`parameter`] ("," `defparameter`)* ["," "**" `parameter`]
: | "**" `parameter`
: | "**" `parameter`
: | `defparameter` [","] )
: | `defparameter` [","] )
parameter: `identifier` [":" `expression`]
parameter: `identifier` [":" `expression`]
...
...
Doc/reference/datamodel.rst
Dosyayı görüntüle @
aa7886dd
...
@@ -77,7 +77,7 @@ are still reachable.
...
@@ -77,7 +77,7 @@ are still reachable.
module for information on controlling the collection of cyclic garbage.
module for information on controlling the collection of cyclic garbage.
Other implementations act differently and CPython may change.
Other implementations act differently and CPython may change.
Do not depend on immediate finalization of objects when they become
Do not depend on immediate finalization of objects when they become
unreachable (
ex: always close files
).
unreachable (
so you should always close files explicitly
).
Note that the use of the implementation's tracing or debugging facilities may
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
keep objects alive that would normally be collectable. Also note that catching
...
@@ -1722,7 +1722,7 @@ property creation, proxies, frameworks, and automatic resource
...
@@ -1722,7 +1722,7 @@ property creation, proxies, frameworks, and automatic resource
locking/synchronization.
locking/synchronization.
Here is an example of a metaclass that uses an :class:`collections.OrderedDict`
Here is an example of a metaclass that uses an :class:`collections.OrderedDict`
to remember the order that class
members we
re defined::
to remember the order that class
variables a
re defined::
class OrderedClass(type):
class OrderedClass(type):
...
...
Doc/reference/executionmodel.rst
Dosyayı görüntüle @
aa7886dd
...
@@ -31,11 +31,11 @@ that name established in the innermost function block containing the use.
...
@@ -31,11 +31,11 @@ that name established in the innermost function block containing the use.
A :dfn:`block` is a piece of Python program text that is executed as a unit.
A :dfn:`block` is a piece of Python program text that is executed as a unit.
The following are blocks: a module, a function body, and a class definition.
The following are blocks: a module, a function body, and a class definition.
Each command typed interactively is a block. A script file (a file given as
Each command typed interactively is a block. A script file (a file given as
standard input to the interpreter or specified
on the interpreter command lin
e
standard input to the interpreter or specified
as a command line argument to th
e
the first argument) is a code block. A script command (a command specified on
interpreter) is a code block. A script command (a command specified on the
the interpreter command line with the '**-c**' option) is a code block. The
interpreter command line with the '**-c**' option) is a code block. The string
string argument passed to the built-in functions :func:`eval` and :func:`exec`
argument passed to the built-in functions :func:`eval` and :func:`exec` is a
is a
code block.
code block.
.. index:: pair: execution; frame
.. index:: pair: execution; frame
...
@@ -77,7 +77,7 @@ global.) If a variable is used in a code block but not defined there, it is a
...
@@ -77,7 +77,7 @@ global.) If a variable is used in a code block but not defined there, it is a
single: UnboundLocalError
single: UnboundLocalError
When a name is not found at all, a :exc:`NameError` exception is raised. If the
When a name is not found at all, a :exc:`NameError` exception is raised. If the
name refers to a local variable that has not been bound, a
name refers to a local variable that has not been bound, a
n
:exc:`UnboundLocalError` exception is raised. :exc:`UnboundLocalError` is a
:exc:`UnboundLocalError` exception is raised. :exc:`UnboundLocalError` is a
subclass of :exc:`NameError`.
subclass of :exc:`NameError`.
...
...
Doc/reference/expressions.rst
Dosyayı görüntüle @
aa7886dd
...
@@ -29,7 +29,7 @@ Arithmetic conversions
...
@@ -29,7 +29,7 @@ Arithmetic conversions
When a description of an arithmetic operator below uses the phrase "the numeric
When a description of an arithmetic operator below uses the phrase "the numeric
arguments are converted to a common type," this means that the operator
arguments are converted to a common type," this means that the operator
implementation for built-in types works
that way
:
implementation for built-in types works
as follows
:
* If either argument is a complex number, the other is converted to complex;
* If either argument is a complex number, the other is converted to complex;
...
@@ -38,8 +38,9 @@ implementation for built-in types works that way:
...
@@ -38,8 +38,9 @@ implementation for built-in types works that way:
* otherwise, both must be integers and no conversion is necessary.
* otherwise, both must be integers and no conversion is necessary.
Some additional rules apply for certain operators (e.g., a string left argument
Some additional rules apply for certain operators (e.g., a string as a left
to the '%' operator). Extensions must define their own conversion behavior.
argument to the '%' operator). Extensions must define their own conversion
behavior.
.. _atoms:
.. _atoms:
...
@@ -183,7 +184,7 @@ nesting from left to right, and evaluating the expression to produce an element
...
@@ -183,7 +184,7 @@ nesting from left to right, and evaluating the expression to produce an element
each time the innermost block is reached.
each time the innermost block is reached.
Note that the comprehension is executed in a separate scope, so names assigned
Note that the comprehension is executed in a separate scope, so names assigned
to in the target list don't "leak" in the enclosing scope.
to in the target list don't "leak" in
to
the enclosing scope.
.. _lists:
.. _lists:
...
@@ -293,7 +294,7 @@ for comprehensions, except that it is enclosed in parentheses instead of
...
@@ -293,7 +294,7 @@ for comprehensions, except that it is enclosed in parentheses instead of
brackets or curly braces.
brackets or curly braces.
Variables used in the generator expression are evaluated lazily when the
Variables used in the generator expression are evaluated lazily when the
:meth:`~generator.__next__` method is called for generator object (in the same
:meth:`~generator.__next__` method is called for
the
generator object (in the same
fashion as normal generators). However, the leftmost :keyword:`for` clause is
fashion as normal generators). However, the leftmost :keyword:`for` clause is
immediately evaluated, so that an error produced by it can be seen before any
immediately evaluated, so that an error produced by it can be seen before any
other possible error in the code that handles the generator expression.
other possible error in the code that handles the generator expression.
...
@@ -302,7 +303,7 @@ may depend on the previous :keyword:`for` loop. For example: ``(x*y for x in
...
@@ -302,7 +303,7 @@ may depend on the previous :keyword:`for` loop. For example: ``(x*y for x in
range(10) for y in bar(x))``.
range(10) for y in bar(x))``.
The parentheses can be omitted on calls with only one argument. See section
The parentheses can be omitted on calls with only one argument. See section
:ref:`calls` for
the detail
.
:ref:`calls` for
details
.
.. _yieldexpr:
.. _yieldexpr:
...
@@ -327,12 +328,12 @@ When a generator function is called, it returns an iterator known as a
...
@@ -327,12 +328,12 @@ When a generator function is called, it returns an iterator known as a
generator. That generator then controls the execution of a generator function.
generator. That generator then controls the execution of a generator function.
The execution starts when one of the generator's methods is called. At that
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
time, the execution proceeds to the first yield expression, where it is
suspended again, returning the value of :token:`expression_list` to generator's
suspended again, returning the value of :token:`expression_list` to
the
generator's
caller. By suspended, we mean that all local state is retained, including the
caller. By suspended, we mean that all local state is retained, including the
current bindings of local variables, the instruction pointer, and the internal
current bindings of local variables, the instruction pointer, and the internal
evaluation stack. When the execution is resumed by calling one of the
evaluation stack. When the execution is resumed by calling one of the
generator's methods, the function can proceed exactly as if the yield expression
generator's methods, the function can proceed exactly as if the yield expression
w
as
just another external call. The value of the yield expression after
w
ere
just another external call. The value of the yield expression after
resuming depends on the method which resumed the execution. If
resuming depends on the method which resumed the execution. If
:meth:`~generator.__next__` is used (typically via either a :keyword:`for` or
:meth:`~generator.__next__` is used (typically via either a :keyword:`for` or
the :func:`next` builtin) then the result is :const:`None`. Otherwise, if
the :func:`next` builtin) then the result is :const:`None`. Otherwise, if
...
@@ -344,10 +345,10 @@ that method.
...
@@ -344,10 +345,10 @@ that method.
All of this makes generator functions quite similar to coroutines; they yield
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
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
suspended. The only difference is that a generator function cannot control
where
should the execution
continue after it yields; the control is always
where
the execution should
continue after it yields; the control is always
transferred to the generator's caller.
transferred to the generator's caller.
y
ield expressions are allowed in the :keyword:`try` clause of a :keyword:`try`
Y
ield expressions are allowed in the :keyword:`try` clause of a :keyword:`try`
... :keyword:`finally` construct. If the generator is not resumed before it is
... :keyword:`finally` construct. If the generator is not resumed before it is
finalized (by reaching a zero reference count or by being garbage collected),
finalized (by reaching a zero reference count or by being garbage collected),
the generator-iterator's :meth:`~generator.close` method will be called,
the generator-iterator's :meth:`~generator.close` method will be called,
...
@@ -430,7 +431,7 @@ is already executing raises a :exc:`ValueError` exception.
...
@@ -430,7 +431,7 @@ is already executing raises a :exc:`ValueError` exception.
.. method:: generator.throw(type[, value[, traceback]])
.. method:: generator.throw(type[, value[, traceback]])
Raises an exception of type ``type`` at the point where generator was paused,
Raises an exception of type ``type`` at the point where
the
generator was paused,
and returns the next value yielded by the generator function. If the generator
and returns the next value yielded by the generator function. If the generator
exits without yielding another value, a :exc:`StopIteration` exception is
exits without yielding another value, a :exc:`StopIteration` exception is
raised. If the generator function does not catch the passed-in exception, or
raised. If the generator function does not catch the passed-in exception, or
...
@@ -520,11 +521,11 @@ An attribute reference is a primary followed by a period and a name:
...
@@ -520,11 +521,11 @@ An attribute reference is a primary followed by a period and a name:
The primary must evaluate to an object of a type that supports attribute
The primary must evaluate to an object of a type that supports attribute
references, which most objects do. This object is then asked to produce the
references, which most objects do. This object is then asked to produce the
attribute whose name is the identifier
(which can be customized by overriding
attribute whose name is the identifier
. This production can be customized by
the :meth:`__getattr__` method). If this attribute is not available, the
overriding the :meth:`__getattr__` method). If this attribute is not available,
exception :exc:`AttributeError` is raised. Otherwise, the type and value of the
the exception :exc:`AttributeError` is raised. Otherwise, the type and value of
object produced is determined by the object. Multiple evaluations of the sam
e
the object produced is determined by the object. Multiple evaluations of th
e
attribute reference may yield different objects.
same
attribute reference may yield different objects.
.. _subscriptions:
.. _subscriptions:
...
@@ -549,9 +550,9 @@ A subscription selects an item of a sequence (string, tuple or list) or mapping
...
@@ -549,9 +550,9 @@ A subscription selects an item of a sequence (string, tuple or list) or mapping
.. productionlist::
.. productionlist::
subscription: `primary` "[" `expression_list` "]"
subscription: `primary` "[" `expression_list` "]"
The primary must evaluate to an object that supports subscription
, e.g. a list
The primary must evaluate to an object that supports subscription
(lists or
or dictionary. User-defined objects can support subscription by defining a
dictionaries for example). User-defined objects can support subscription by
:meth:`__getitem__` method.
defining a
:meth:`__getitem__` method.
For built-in objects, there are two types of objects that support subscription:
For built-in objects, there are two types of objects that support subscription:
...
@@ -660,8 +661,8 @@ series of :term:`arguments <argument>`:
...
@@ -660,8 +661,8 @@ series of :term:`arguments <argument>`:
keyword_arguments: `keyword_item` ("," `keyword_item`)*
keyword_arguments: `keyword_item` ("," `keyword_item`)*
keyword_item: `identifier` "=" `expression`
keyword_item: `identifier` "=" `expression`
A
trailing comma may be present after the positional and keyword arguments but
A
n optional trailing comma may be present after the positional and keyword arguments
does not affect the semantics.
but
does not affect the semantics.
.. index::
.. index::
single: parameter; call semantics
single: parameter; call semantics
...
@@ -943,9 +944,9 @@ point number using the :func:`abs` function if appropriate.
...
@@ -943,9 +944,9 @@ point number using the :func:`abs` function if appropriate.
.. index:: single: addition
.. index:: single: addition
The ``+`` (addition) operator yields the sum of its arguments. The arguments
The ``+`` (addition) operator yields the sum of its arguments. The arguments
must either both be numbers or both
sequences of the same type. In the former
must either both be numbers or both
be sequences of the same type. In the
case, the numbers are converted to a common type and then added together. In
former case, the numbers are converted to a common type and then added together.
the latter case, the sequences are concatenated.
In
the latter case, the sequences are concatenated.
.. index:: single: subtraction
.. index:: single: subtraction
...
@@ -1106,7 +1107,7 @@ Comparison of objects of the same type depends on the type:
...
@@ -1106,7 +1107,7 @@ Comparison of objects of the same type depends on the type:
another one is made arbitrarily but consistently within one execution of a
another one is made arbitrarily but consistently within one execution of a
program.
program.
Comparison of objects of
the
differing types depends on whether either of the
Comparison of objects of differing types depends on whether either of the
types provide explicit support for the comparison. Most numeric types can be
types provide explicit support for the comparison. Most numeric types can be
compared with one another. When cross-type comparison is not supported, the
compared with one another. When cross-type comparison is not supported, the
comparison method returns ``NotImplemented``.
comparison method returns ``NotImplemented``.
...
@@ -1116,7 +1117,7 @@ comparison method returns ``NotImplemented``.
...
@@ -1116,7 +1117,7 @@ comparison method returns ``NotImplemented``.
The operators :keyword:`in` and :keyword:`not in` test for membership. ``x in
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
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
in s`` returns the negation of ``x in s``. All built-in sequences and set types
support this as well as dictionary, for which :keyword:`in` tests whether
a
the
support this as well as dictionary, for which :keyword:`in` tests whether the
dictionary has a given key. For container types such as list, tuple, set,
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
frozenset, dict, or collections.deque, the expression ``x in y`` is equivalent
to ``any(x is e or x == e for e in y)``.
to ``any(x is e or x == e for e in y)``.
...
@@ -1202,9 +1203,9 @@ returned; otherwise, *y* is evaluated and the resulting value is returned.
...
@@ -1202,9 +1203,9 @@ returned; otherwise, *y* is evaluated and the resulting value is returned.
they return to ``False`` and ``True``, but rather return the last evaluated
they return to ``False`` and ``True``, but rather return the last evaluated
argument. This is sometimes useful, e.g., if ``s`` is a string that should be
argument. This is sometimes useful, e.g., if ``s`` is a string that should be
replaced by a default value if it is empty, the expression ``s or 'foo'`` yields
replaced by a default value if it is empty, the expression ``s or 'foo'`` yields
the desired value. Because :keyword:`not` has to
invent a value anyway, it does
the desired value. Because :keyword:`not` has to
create a new value, it
not bother to return a value of the same type as its argument, so e.g., ``no
t
returns a boolean value regardless of the type of its argumen
t
'foo'`` yields ``False``, not
``''``.)
(for example, ``not 'foo'`` produces ``False`` rather than
``''``.)
Conditional expressions
Conditional expressions
...
@@ -1222,8 +1223,8 @@ Conditional expressions
...
@@ -1222,8 +1223,8 @@ Conditional expressions
Conditional expressions (sometimes called a "ternary operator") have the lowest
Conditional expressions (sometimes called a "ternary operator") have the lowest
priority of all Python operations.
priority of all Python operations.
The expression ``x if C else y`` first evaluates the condition, *C*
(*not* *x*);
The expression ``x if C else y`` first evaluates the condition, *C*
rather than *x*.
i
f *C* is true, *x* is evaluated and its value is returned; otherwise, *y* is
I
f *C* is true, *x* is evaluated and its value is returned; otherwise, *y* is
evaluated and its value is returned.
evaluated and its value is returned.
See :pep:`308` for more details about conditional expressions.
See :pep:`308` for more details about conditional expressions.
...
@@ -1244,10 +1245,9 @@ Lambdas
...
@@ -1244,10 +1245,9 @@ Lambdas
lambda_expr: "lambda" [`parameter_list`]: `expression`
lambda_expr: "lambda" [`parameter_list`]: `expression`
lambda_expr_nocond: "lambda" [`parameter_list`]: `expression_nocond`
lambda_expr_nocond: "lambda" [`parameter_list`]: `expression_nocond`
Lambda expressions (sometimes called lambda forms) have the same syntactic position as
Lambda expressions (sometimes called lambda forms) are create anonymous
expressions. They are a shorthand to create anonymous functions; the expression
functions. The expression ``lambda arguments: expression`` yields a function
``lambda arguments: expression`` yields a function object. The unnamed object
object. The unnamed object behaves like a function object defined with ::
behaves like a function object defined with ::
def <lambda>(arguments):
def <lambda>(arguments):
return expression
return expression
...
@@ -1310,13 +1310,15 @@ Operator precedence
...
@@ -1310,13 +1310,15 @@ Operator precedence
.. index:: pair: operator; precedence
.. index:: pair: operator; precedence
The following table summarizes the operator precedence
s
in Python, from lowest
The following table summarizes the operator precedence in Python, from lowest
precedence (least binding) to highest precedence (most binding). Operators in
precedence (least binding) to highest precedence (most binding). Operators in
the same box have the same precedence. Unless the syntax is explicitly given,
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
operators are binary. Operators in the same box group left to right (except for
comparisons, including tests, which all have the same precedence and chain from
exponentiation, which groups from right to left).
left to right --- see section :ref:`comparisons` --- and exponentiation, which
groups from right to left).
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.
+-----------------------------------------------+-------------------------------------+
+-----------------------------------------------+-------------------------------------+
...
...
Doc/reference/simple_stmts.rst
Dosyayı görüntüle @
aa7886dd
...
@@ -7,7 +7,7 @@ Simple statements
...
@@ -7,7 +7,7 @@ Simple statements
..
index
::
pair
:
simple
;
statement
..
index
::
pair
:
simple
;
statement
Simple
statements
are
comprised
within
a
single
logical
line
.
Several
simple
A
simple
statement
is
comprised
within
a
single
logical
line
.
Several
simple
statements
may
occur
on
a
single
line
separated
by
semicolons
.
The
syntax
for
statements
may
occur
on
a
single
line
separated
by
semicolons
.
The
syntax
for
simple
statements
is
:
simple
statements
is
:
...
@@ -91,8 +91,8 @@ attributes or items of mutable objects:
...
@@ -91,8 +91,8 @@ attributes or items of mutable objects:
:
|
`
slicing
`
:
|
`
slicing
`
:
|
"*"
`
target
`
:
|
"*"
`
target
`
(
See
section
:
ref
:`
primaries
`
for
the
syntax
definitions
for
the
last
three
(
See
section
:
ref
:`
primaries
`
for
the
syntax
definitions
for
*
attributeref
*,
symbols
.)
*
subscription
*,
and
*
slicing
*
.)
An
assignment
statement
evaluates
the
expression
list
(
remember
that
this
can
be
An
assignment
statement
evaluates
the
expression
list
(
remember
that
this
can
be
a
single
expression
or
a
comma
-
separated
list
,
the
latter
yielding
a
tuple
)
and
a
single
expression
or
a
comma
-
separated
list
,
the
latter
yielding
a
tuple
)
and
...
@@ -228,7 +228,7 @@ Assignment of an object to a single target is recursively defined as follows.
...
@@ -228,7 +228,7 @@ Assignment of an object to a single target is recursively defined as follows.
inclusive
.
Finally
,
the
sequence
object
is
asked
to
replace
the
slice
with
inclusive
.
Finally
,
the
sequence
object
is
asked
to
replace
the
slice
with
the
items
of
the
assigned
sequence
.
The
length
of
the
slice
may
be
different
the
items
of
the
assigned
sequence
.
The
length
of
the
slice
may
be
different
from
the
length
of
the
assigned
sequence
,
thus
changing
the
length
of
the
from
the
length
of
the
assigned
sequence
,
thus
changing
the
length
of
the
target
sequence
,
if
the
object
allows
it
.
target
sequence
,
if
the
target
sequence
allows
it
.
..
impl
-
detail
::
..
impl
-
detail
::
...
@@ -236,14 +236,15 @@ Assignment of an object to a single target is recursively defined as follows.
...
@@ -236,14 +236,15 @@ Assignment of an object to a single target is recursively defined as follows.
as
for
expressions
,
and
invalid
syntax
is
rejected
during
the
code
generation
as
for
expressions
,
and
invalid
syntax
is
rejected
during
the
code
generation
phase
,
causing
less
detailed
error
messages
.
phase
,
causing
less
detailed
error
messages
.
WARNING
:
Although
the
definition
of
assignment
implies
that
overlaps
between
the
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
``
left
-
hand
side
and
the
right
-
hand
side
are
'simultanenous'
(
for
example
``
a
,
b
=
swaps
two
variables
),
overlaps
*
within
*
the
collection
of
assigned
-
to
variables
b
,
a
``
swaps
two
variables
),
overlaps
*
within
*
the
collection
of
assigned
-
to
are
not
safe
! For instance, the following program prints ``[0, 2]``::
variables
occur
left
-
to
-
right
,
sometimes
resulting
in
confusion
.
For
instance
,
the
following
program
prints
``[
0
,
2
]``::
x
=
[
0
,
1
]
x
=
[
0
,
1
]
i
=
0
i
=
0
i
,
x
[
i
]
=
1
,
2
i
,
x
[
i
]
=
1
,
2
#
i
is
updated
,
then
x
[
i
]
is
updated
print
(
x
)
print
(
x
)
...
@@ -283,7 +284,7 @@ operation and an assignment statement:
...
@@ -283,7 +284,7 @@ operation and an assignment statement:
augop
:
"+="
|
"-="
|
"*="
|
"/="
|
"//="
|
"%="
|
"**="
augop
:
"+="
|
"-="
|
"*="
|
"/="
|
"//="
|
"%="
|
"**="
:
|
">>="
|
"<<="
|
"&="
|
"^="
|
"|="
:
|
">>="
|
"<<="
|
"&="
|
"^="
|
"|="
(
See
section
:
ref
:`
primaries
`
for
the
syntax
definitions
for
the
last
three
(
See
section
:
ref
:`
primaries
`
for
the
syntax
definitions
of
the
last
three
symbols
.)
symbols
.)
An
augmented
assignment
evaluates
the
target
(
which
,
unlike
normal
assignment
An
augmented
assignment
evaluates
the
target
(
which
,
unlike
normal
assignment
...
@@ -297,6 +298,11 @@ version, ``x`` is only evaluated once. Also, when possible, the actual operation
...
@@ -297,6 +298,11 @@ version, ``x`` is only evaluated once. Also, when possible, the actual operation
is
performed
*
in
-
place
*,
meaning
that
rather
than
creating
a
new
object
and
is
performed
*
in
-
place
*,
meaning
that
rather
than
creating
a
new
object
and
assigning
that
to
the
target
,
the
old
object
is
modified
instead
.
assigning
that
to
the
target
,
the
old
object
is
modified
instead
.
Unlike
normal
assignments
,
augmented
assignments
evaluate
the
left
-
hand
side
*
before
*
evaluating
the
right
-
hand
side
.
For
example
,
``
a
[
i
]
+=
f
(
x
)``
first
looks
-
up
``
a
[
i
]``,
then
it
evaluates
``
f
(
x
)``
and
performs
the
addition
,
and
lastly
,
it
writes
the
result
back
to
``
a
[
i
]``.
With
the
exception
of
assigning
to
tuples
and
multiple
targets
in
a
single
With
the
exception
of
assigning
to
tuples
and
multiple
targets
in
a
single
statement
,
the
assignment
done
by
augmented
assignment
statements
is
handled
the
statement
,
the
assignment
done
by
augmented
assignment
statements
is
handled
the
same
way
as
normal
assignments
.
Similarly
,
with
the
exception
of
the
possible
same
way
as
normal
assignments
.
Similarly
,
with
the
exception
of
the
possible
...
@@ -658,7 +664,7 @@ commas) the two steps are carried out separately for each clause, just
...
@@ -658,7 +664,7 @@ commas) the two steps are carried out separately for each clause, just
as
though
the
clauses
had
been
separated
out
into
individiual
import
as
though
the
clauses
had
been
separated
out
into
individiual
import
statements
.
statements
.
The
details
of
the
first
step
,
finding
and
loading
modules
is
described
in
The
details
of
the
first
step
,
finding
and
loading
modules
are
described
in
greater
detail
in
the
section
on
the
:
ref
:`
import
system
<
importsystem
>`,
greater
detail
in
the
section
on
the
:
ref
:`
import
system
<
importsystem
>`,
which
also
describes
the
various
types
of
packages
and
modules
that
can
which
also
describes
the
various
types
of
packages
and
modules
that
can
be
imported
,
as
well
as
all
the
hooks
that
can
be
used
to
customize
be
imported
,
as
well
as
all
the
hooks
that
can
be
used
to
customize
...
@@ -689,7 +695,7 @@ available in the local namespace in one of three ways:
...
@@ -689,7 +695,7 @@ available in the local namespace in one of three ways:
The
:
keyword
:`
from
`
form
uses
a
slightly
more
complex
process
:
The
:
keyword
:`
from
`
form
uses
a
slightly
more
complex
process
:
#.
find
the
module
specified
in
the
:
keyword
:`
from
`
clause
loading
and
#.
find
the
module
specified
in
the
:
keyword
:`
from
`
clause
,
loading
and
initializing
it
if
necessary
;
initializing
it
if
necessary
;
#.
for
each
of
the
identifiers
specified
in
the
:
keyword
:`
import
`
clauses
:
#.
for
each
of
the
identifiers
specified
in
the
:
keyword
:`
import
`
clauses
:
...
@@ -697,7 +703,7 @@ The :keyword:`from` form uses a slightly more complex process:
...
@@ -697,7 +703,7 @@ The :keyword:`from` form uses a slightly more complex process:
#.
if
not
,
attempt
to
import
a
submodule
with
that
name
and
then
#.
if
not
,
attempt
to
import
a
submodule
with
that
name
and
then
check
the
imported
module
again
for
that
attribute
check
the
imported
module
again
for
that
attribute
#.
if
the
attribute
is
not
found
,
:
exc
:`
ImportError
`
is
raised
.
#.
if
the
attribute
is
not
found
,
:
exc
:`
ImportError
`
is
raised
.
#.
otherwise
,
a
reference
to
that
value
is
boun
d
in
the
local
namespace
,
#.
otherwise
,
a
reference
to
that
value
is
store
d
in
the
local
namespace
,
using
the
name
in
the
:
keyword
:`
as
`
clause
if
it
is
present
,
using
the
name
in
the
:
keyword
:`
as
`
clause
if
it
is
present
,
otherwise
using
the
attribute
name
otherwise
using
the
attribute
name
...
@@ -726,9 +732,9 @@ to avoid accidentally exporting items that are not part of the API (such as
...
@@ -726,9 +732,9 @@ to avoid accidentally exporting items that are not part of the API (such as
library
modules
which
were
imported
and
used
within
the
module
).
library
modules
which
were
imported
and
used
within
the
module
).
The
:
keyword
:`
from
`
form
with
``*``
may
only
occur
in
a
module
scope
.
The
wild
The
:
keyword
:`
from
`
form
with
``*``
may
only
occur
in
a
module
scope
.
The
wild
card
form
of
import
---
``
import
*``
---
is
only
allowed
at
the
module
level
.
card
form
of
import
---
``
from
module
import
*``
---
is
only
allowed
at
the
Attempting
to
use
it
in
class
or
function
definitions
will
raise
a
module
level
.
Attempting
to
use
it
in
class
or
function
definitions
will
raise
:
exc
:`
SyntaxError
`.
a
:
exc
:`
SyntaxError
`.
..
index
::
..
index
::
single
:
relative
;
import
single
:
relative
;
import
...
@@ -747,7 +753,7 @@ import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
...
@@ -747,7 +753,7 @@ import mod`` from within ``pkg.subpkg1`` you will import ``pkg.subpkg2.mod``.
The
specification
for
relative
imports
is
contained
within
:
pep
:`
328
`.
The
specification
for
relative
imports
is
contained
within
:
pep
:`
328
`.
:
func
:`
importlib
.
import_module
`
is
provided
to
support
applications
that
:
func
:`
importlib
.
import_module
`
is
provided
to
support
applications
that
determine
which
modules
need
to
be
loaded
dynamically
.
determine
dynamically
the
modules
to
be
loaded
.
..
_future
:
..
_future
:
...
@@ -759,10 +765,12 @@ Future statements
...
@@ -759,10 +765,12 @@ Future statements
A
:
dfn
:`
future
statement
`
is
a
directive
to
the
compiler
that
a
particular
A
:
dfn
:`
future
statement
`
is
a
directive
to
the
compiler
that
a
particular
module
should
be
compiled
using
syntax
or
semantics
that
will
be
available
in
a
module
should
be
compiled
using
syntax
or
semantics
that
will
be
available
in
a
specified
future
release
of
Python
.
The
future
statement
is
intended
to
ease
specified
future
release
of
Python
where
the
feature
becomes
standard
.
migration
to
future
versions
of
Python
that
introduce
incompatible
changes
to
the
language
.
It
allows
use
of
the
new
features
on
a
per
-
module
basis
before
The
future
statement
is
intended
to
ease
migration
to
future
versions
of
Python
the
release
in
which
the
feature
becomes
standard
.
that
introduce
incompatible
changes
to
the
language
.
It
allows
use
of
the
new
features
on
a
per
-
module
basis
before
the
release
in
which
the
feature
becomes
standard
.
..
productionlist
::
*
..
productionlist
::
*
future_statement
:
"from"
"__future__"
"import"
feature
[
"as"
name
]
future_statement
:
"from"
"__future__"
"import"
feature
[
"as"
name
]
...
@@ -857,7 +865,7 @@ definition, function definition, or :keyword:`import` statement.
...
@@ -857,7 +865,7 @@ definition, function definition, or :keyword:`import` statement.
.. impl-detail::
.. impl-detail::
The current implementation does not enforce the
latter
two restrictions, but
The current implementation does not enforce the two restrictions, but
programs should not abuse this freedom, as future implementations may enforce
programs should not abuse this freedom, as future implementations may enforce
them or silently change the meaning of the program.
them or silently change the meaning of the program.
...
@@ -890,16 +898,16 @@ The :keyword:`nonlocal` statement
...
@@ -890,16 +898,16 @@ The :keyword:`nonlocal` statement
:
|
"nonlocal"
identifier
augop
expression_list
:
|
"nonlocal"
identifier
augop
expression_list
The
:
keyword
:`
nonlocal
`
statement
causes
the
listed
identifiers
to
refer
to
The
:
keyword
:`
nonlocal
`
statement
causes
the
listed
identifiers
to
refer
to
previously
bound
variables
in
the
nearest
enclosing
scope
.
This
is
important
previously
bound
variables
in
the
nearest
enclosing
scope
excluding
globals
.
because
the
default
behavior
for
binding
is
to
search
the
local
namespac
e
This
is
important
because
the
default
behavior
for
binding
is
to
search
th
e
first
.
The
statement
allows
encapsulated
code
to
rebind
variables
outside
of
local
namespace
first
.
The
statement
allows
encapsulated
code
to
rebind
the
local
scope
besides
the
global
(
module
)
scope
.
variables
outside
of
the
local
scope
besides
the
global
(
module
)
scope
.
..
XXX
not
implemented
..
XXX
not
implemented
The
:
keyword
:`
nonlocal
`
statement
may
prepend
an
assignment
or
augmented
The
:
keyword
:`
nonlocal
`
statement
may
prepend
an
assignment
or
augmented
assignment
,
but
not
an
expression
.
assignment
,
but
not
an
expression
.
Names
listed
in
a
:
keyword
:`
nonlocal
`
statement
,
unlike
t
o
t
hose
listed
in
a
Names
listed
in
a
:
keyword
:`
nonlocal
`
statement
,
unlike
those
listed
in
a
:
keyword
:`
global
`
statement
,
must
refer
to
pre
-
existing
bindings
in
an
:
keyword
:`
global
`
statement
,
must
refer
to
pre
-
existing
bindings
in
an
enclosing
scope
(
the
scope
in
which
a
new
binding
should
be
created
cannot
enclosing
scope
(
the
scope
in
which
a
new
binding
should
be
created
cannot
be
determined
unambiguously
).
be
determined
unambiguously
).
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment