> On Sat, Jul 28, 2001 at 09:54:21AM -0400, Guido van Rossum wrote: > > > Worse, according to the Reference Manual, > > > > The "from" form with "*" may only occur in a module scope. > > > I don't know when that snuck in, but it's not enforced. If we're > > serious, we should at least add a warning! > > Eh, last I looked, you and Jeremy were most serious about this :) It came up > during the nested-scopes change in 2.1, where it was first made illegal, and > later just illegal in the presence of a nested scope: > > (without future statement) > >>> def spam(x): > ... from stat import * > ... def eggs(): > ... print x > ... > <stdin>:1: SyntaxWarning: local name 'x' in 'spam' shadows use of 'x' as > global in nested scope 'eggs' > <stdin>:1: SyntaxWarning: import * is not allowed in function 'spam' because > it contains a nested function with free variables > > (with future statement) > >>> def spam(x): > ... from stat import * > ... def eggs(): > ... print x > ... > File "<stdin>", line 2 > SyntaxError: import * is not allowed in function 'spam' because it contains > a nested function with free variables > > > I'll add a bug report. Hm. I'm curious why it was not made a warning without a nested function. Perhaps because too much 3rd party code would trigger the warning? (I have a feeling that lots of amateur programmers are a lot fonder of import * than they should be :-( ). > Should we warn about exec (without 'in' clause) in functions as well ? > > (without future statement) > >>> def spam(x,y): > ... exec y > ... def eggs(): > ... print x > ... > <stdin>:1: SyntaxWarning: local name 'x' in 'spam' shadows use of 'x' as > global in nested scope 'eggs' > <stdin>:1: SyntaxWarning: unqualified exec is not allowed in function 'spam' > it contains a nested function with free variables > > (with future statement) > >>> def spam(x,y): > ... exec y > ... def eggs(): > ... print x > ... > File "<stdin>", line 2 > SyntaxError: unqualified exec is not allowed in function 'spam' it contains > a nested function with free variables > > The warnings *only* occur in the presence of a nested scope, though. That one is just fine I think. --Guido van Rossum (home page: http://www.python.org/~guido/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4