Minor editorial changes.
This commit is contained in:
parent
64fe351eed
commit
01fc25eeb0
60
pep-0221.txt
60
pep-0221.txt
|
@ -1,37 +1,38 @@
|
||||||
PEP: 221
|
PEP: 221
|
||||||
Title: Import As
|
Title: Import As
|
||||||
Version: $Revision$
|
Version: $Revision$
|
||||||
Owner: thomas@xs4all.net (Thomas Wouters)
|
Author: thomas@xs4all.net (Thomas Wouters)
|
||||||
Python-Version: 2.0
|
|
||||||
Status: Accepted
|
Status: Accepted
|
||||||
Created: 15-Aug-2000
|
|
||||||
Type: Standard
|
Type: Standard
|
||||||
|
Python-Version: 2.0
|
||||||
|
Created: 15-Aug-2000
|
||||||
|
Post-History:
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
|
|
||||||
This PEP describes the `import as' proposal for Python 2.0. This
|
This PEP describes the `import as' proposal for Python 2.0. This
|
||||||
PEP tracks the status and ownership of this feature. It contains a
|
PEP tracks the status and ownership of this feature. It contains
|
||||||
description of the feature and outlines changes necessary to
|
a description of the feature and outlines changes necessary to
|
||||||
support the feature. The CVS revision history of this file
|
support the feature. The CVS revision history of this file
|
||||||
contains the definitive historical record.
|
contains the definitive historical record.
|
||||||
|
|
||||||
|
|
||||||
Rationale
|
Rationale
|
||||||
|
|
||||||
This PEP proposes a small extention of current Python syntax
|
This PEP proposes an extention of Python syntax regarding the
|
||||||
regarding the `import' and `from <module> import' statements.
|
`import' and `from <module> import' statements. These statements
|
||||||
These statements load in a module, and either bind that module to
|
load in a module, and either bind that module to a local name, or
|
||||||
a local name, or binds objects from that module to a local name.
|
binds objects from that module to a local name. However, it is
|
||||||
However, it is sometimes desirable to bind those objects to a
|
sometimes desirable to bind those objects to a different name, for
|
||||||
different name, for instance to avoid name clashes. Currently, a
|
instance to avoid name clashes. This can currently be achieved
|
||||||
round-about way has to be used to achieve this:
|
using the following idiom:
|
||||||
|
|
||||||
import os
|
import os
|
||||||
real_os = os
|
real_os = os
|
||||||
del os
|
del os
|
||||||
|
|
||||||
And similar for the `from ... import' statement:
|
And similarly for the `from ... import' statement:
|
||||||
|
|
||||||
from os import fdopen, exit, stat
|
from os import fdopen, exit, stat
|
||||||
os_fdopen = fdopen
|
os_fdopen = fdopen
|
||||||
|
@ -45,7 +46,7 @@ Rationale
|
||||||
from os import fdopen as os_fdopen, exit, stat as os_stat
|
from os import fdopen as os_fdopen, exit, stat as os_stat
|
||||||
|
|
||||||
The `as' name is not intended to be a keyword, and some trickery
|
The `as' name is not intended to be a keyword, and some trickery
|
||||||
has to be used to convince the CPython parser it isn't one. For
|
has to be used to convince the CPython parser it isn't one. For
|
||||||
more advanced parsers/tokenizers, however, this should not be a
|
more advanced parsers/tokenizers, however, this should not be a
|
||||||
problem.
|
problem.
|
||||||
|
|
||||||
|
@ -54,19 +55,18 @@ Rationale
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
The actual name stored locally is `os', not `path' (so that the
|
The actual name stored locally is `os', not `path', and the newly
|
||||||
newly imported module can be referenced as `os.path'.) When
|
imported module can be referenced as `os.path'. When introducing
|
||||||
introducing the `as' keyword, it is unclear whether the `os'
|
the `as' keyword, it is unclear whether the `os' module or the
|
||||||
module or the `path' sub-module should be stored `as' the
|
`path' sub-module should be stored `as' the requested local name.
|
||||||
requested local name.
|
|
||||||
|
|
||||||
|
|
||||||
Implementation details
|
Implementation details
|
||||||
|
|
||||||
This PEP has been accepted, and the suggested code change has been
|
This PEP has been accepted, and the suggested code change has been
|
||||||
checked in. The patch can still be found in the SourceForge patch
|
checked in. The patch can still be found in the SourceForge patch
|
||||||
manager[1]. Currently, a NAME field is used in the grammar rather
|
manager[1]. Currently, a NAME field is used in the grammar rather
|
||||||
than a bare string, to avoid the keyword issue. It introduces a
|
than a bare string, to avoid the keyword issue. It introduces a
|
||||||
new bytecode, IMPORT_STAR, which performs the `from module import
|
new bytecode, IMPORT_STAR, which performs the `from module import
|
||||||
*' behaviour, and changes the behaviour of the IMPORT_FROM
|
*' behaviour, and changes the behaviour of the IMPORT_FROM
|
||||||
bytecode so that it loads the requested name (which is always a
|
bytecode so that it loads the requested name (which is always a
|
||||||
|
@ -79,9 +79,9 @@ Implementation details
|
||||||
into the local namespace.
|
into the local namespace.
|
||||||
|
|
||||||
An additional change to this syntax has also been suggested, to
|
An additional change to this syntax has also been suggested, to
|
||||||
generalize the expression given after the `as' clause. Rather than
|
generalize the expression given after the `as' clause. Rather
|
||||||
a single name, it could be allowed to be any expression that
|
than a single name, it could be allowed to be any expression that
|
||||||
yields a valid l-value; anything that can be assigned to. The
|
yields a valid l-value; anything that can be assigned to. The
|
||||||
change to accomodate this is minimal, as the patch proves[2], and
|
change to accomodate this is minimal, as the patch proves[2], and
|
||||||
the resulting generalization allows a number of new constructs
|
the resulting generalization allows a number of new constructs
|
||||||
that run completely parallel with other Python assignment
|
that run completely parallel with other Python assignment
|
||||||
|
@ -103,11 +103,9 @@ Copyright
|
||||||
|
|
||||||
References
|
References
|
||||||
|
|
||||||
[1]
|
[1] http://sourceforge.net/patch/?func=detailpatch&patch_id=101135&group_id=5470
|
||||||
http://sourceforge.net/patch/?func=detailpatch&patch_id=101135&group_id=5470
|
|
||||||
|
|
||||||
[2]
|
[2] http://sourceforge.net/patch/?func=detailpatch&patch_id=101234&group_id=5470
|
||||||
http://sourceforge.net/patch/?func=detailpatch&patch_id=101234&group_id=5470
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue