Add one more proposal to the list of extant proposals (and a reference

to the relevant message on the Python-3000 mailing list).
This commit is contained in:
Ka-Ping Yee 2006-12-01 03:32:33 +00:00
parent 5496d1b4f9
commit 48ff6d0fe8
1 changed files with 17 additions and 12 deletions

View File

@ -168,7 +168,7 @@ assignment to a name implies a declaration of a local variable only
if it would not shadow a name already bound in an outer scope; if it would not shadow a name already bound in an outer scope;
otherwise assignment is interpreted as rebinding of the outer name. otherwise assignment is interpreted as rebinding of the outer name.
Ruby's scoping syntax and rules have also been debated at great Ruby's scoping syntax and rules have also been debated at great
length, and changes seem likely in Ruby 2.0 [25]_. length, and changes seem likely in Ruby 2.0 [28]_.
Overview of Proposals Overview of Proposals
@ -313,12 +313,13 @@ Many spellings have been suggested for such a declaration:
- ``using x`` [22]_ - ``using x`` [22]_
- ``borrow x`` [22]_ - ``borrow x`` [22]_
- ``reuse x`` [23]_ - ``reuse x`` [23]_
- ``scope f x`` [25]_ (explicitly specify which scope)
The most commonly discussed choices appear to be ``outer``, The most commonly discussed choices appear to be ``outer``,
``global``, and ``nonlocal``. ``outer`` is already used as both a ``global``, and ``nonlocal``. ``outer`` is already used as both a
variable name and an attribute name in the standard library. The variable name and an attribute name in the standard library. The
word ``global`` has a conflicting meaning, because "global variable" word ``global`` has a conflicting meaning, because "global variable"
is generally understood to mean a variable with top-level scope [24]_. is generally understood to mean a variable with top-level scope [27]_.
In C, the keyword ``extern`` means that a name refers to a variable In C, the keyword ``extern`` means that a name refers to a variable
in a different compilation unit. While ``nonlocal`` is a bit long in a different compilation unit. While ``nonlocal`` is a bit long
and less pleasant-sounding than some of the other options, it does and less pleasant-sounding than some of the other options, it does
@ -361,7 +362,7 @@ prepended to an assignment or augmented assignment::
nonlocal x = 3 nonlocal x = 3
The above has exactly the same meaning as ``nonlocal x; x = 3``. The above has exactly the same meaning as ``nonlocal x; x = 3``.
(Guido supports a similar form of the ``global`` statement [26]_.) (Guido supports a similar form of the ``global`` statement [24]_.)
On the left side of the shorthand form, only identifiers are allowed, On the left side of the shorthand form, only identifiers are allowed,
not target expressions like ``x[0]``. Otherwise, all forms of not target expressions like ``x[0]``. Otherwise, all forms of
@ -384,7 +385,7 @@ Backward Compatibility
This PEP targets Python 3000, as suggested by Guido [19]_. However, This PEP targets Python 3000, as suggested by Guido [19]_. However,
others have noted that some options considered in this PEP may be others have noted that some options considered in this PEP may be
small enough changes to be feasible in Python 2.x [27]_, in which small enough changes to be feasible in Python 2.x [26]_, in which
case this PEP could possibly be moved to be a 2.x series PEP. case this PEP could possibly be moved to be a 2.x series PEP.
As a (very rough) measure of the impact of introducing a new keyword, As a (very rough) measure of the impact of introducing a new keyword,
@ -500,18 +501,22 @@ References
.. [23] Alternatives to 'outer' (Jim Jewett) .. [23] Alternatives to 'outer' (Jim Jewett)
http://mail.python.org/pipermail/python-3000/2006-November/004153.html http://mail.python.org/pipermail/python-3000/2006-November/004153.html
.. [24] Global variable (version 2006-11-01T01:23:16) .. [24] Draft PEP for outer scopes (Guido van Rossum)
http://en.wikipedia.org/wiki/Global_variable
.. [25] Ruby 2.0 block local variable
http://redhanded.hobix.com/inspect/ruby20BlockLocalVariable.html
.. [26] Draft PEP for outer scopes (Guido van Rossum)
http://mail.python.org/pipermail/python-3000/2006-November/004166.html http://mail.python.org/pipermail/python-3000/2006-November/004166.html
.. [27] Draft PEP for outer scopes (Nick Coghlan) .. [25] Draft PEP for outer scopes (Talin)
http://mail.python.org/pipermail/python-3000/2006-November/004190.html
.. [26] Draft PEP for outer scopes (Nick Coghlan)
http://mail.python.org/pipermail/python-3000/2006-November/004237.html http://mail.python.org/pipermail/python-3000/2006-November/004237.html
.. [27] Global variable (version 2006-11-01T01:23:16)
http://en.wikipedia.org/wiki/Global_variable
.. [28] Ruby 2.0 block local variable
http://redhanded.hobix.com/inspect/ruby20BlockLocalVariable.html
Acknowledgements Acknowledgements
================ ================