n8gray at caltech.edu.is.my.email.address
Mon Feb 5 11:01:58 CET 2001
Tim Peters wrote:
> Whether a name is local to a given scope is, in Python, determined by
> whether the name is *bound* somewhere in that scope. "import *" counts as
> binding, but the compiler has no idea which names are being bound. So
> when compiling code for a nested function N, referencing a non-local name
> (one that is not bound to within N's body) X, the compiler has no idea
> which scope X belongs to if an "import *" (or "exec" stmt) appears in an
> function E. Any name whatsoever *may* become local in E then, but it's
> impossible to know anything about that at compile-time.
Interesting issue. What if the following was allowed:
>>> from tim_bot_module import tb*
telling the compiler that only names beginning with "tb" are imported.
This way you could still design libraries to use from ... import ..*
without totally throwing efficiency out the window. I know import * is
considered harmful, but occasionally (think tkinter) it's a useful
construct, assuming the library is designed to prevent name conflicts.
Just a thought,
California Institute of Technology
Computation and Neural Systems
n8gray <at> caltech <dot> edu
More information about the Python-list