[Skip] > Given that the global keyword or something like it is here to stay > (being preferable over some attribute-style access) (Actually I expect more pushback from Alex once he's back from his trip. He seems to feel strongly about this. :-) > and that global variable writes needs to be known to the compiler > for future efficiency reasons, I think we need to consider > modifications of the current global statement. The best thing I've > seen so far (I forget who proposed it) is > > 'global' vars [ 'in' named_scope ] > > where named_scope can only be the name of a function which encloses > the function containing the declaration. That was my first suggestion earlier this week. The main downside (except from propagating 'global' :-) is that if you rename the function defining the scope you have to fix all global statements referring to it. I saw a variant where the syntax was 'global' vars 'in' 'def' which solves that concern (though not particularly elegantly). > In Greg's example of inc_x_by nested inside f, he'd have declared: > > global x in f > > in inc_x_by. The current global statement (without a scoping > clause) would continue to refer to the outermost scope of the > module. > > This should be compatible with existing usage. The only problem I > see is whether the named_scope needs to be known at compile time or > if it can be deferred until run time. Definitely compile time. 'f' has to be a name of a lexically enclosing 'def'; it's not an expression. The compiler nees to know which scope it refers to so it can turn the correct variable into a cell. --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