[Python-ideas] Object grabbing

Random832 random832 at fastmail.com
Sun May 1 21:25:17 EDT 2016


On Sun, May 1, 2016, at 21:02, Steven D'Aprano wrote:
> Now imagine that you are a beginner, trying to understand this code 
> block. What would you think it does? Might you not be surprised that 
> the two references to ".attr" refer to different variables?
> 
> And of course there is always the objection that the barrier to adding a 
> new keyword is quite high. Somewhere out there, somebody is using 
> "using" as a variable name (perhaps a decorator?) and making this a 
> keyword will break her code. Is it worth it?

Or you could make it context-sensitive, with it being an identifier
unless it's used in this construction. Not saying it's a good idea, just
that it's technically an option.

> Despite these objections, I'm cautiously interested in this. I don't 
> think the objections are insurmountable, and if there is a significant 
> gain in readability and performance, it may be worth while.
> 
> A cautious and tentative +1.
> 
> It may be worth you doing a survey of other languages and seeing if they 
> have anything similar.

Javascript's deprecated "with" statement is superficially similar, but
it doesn't use the dot, instead it basically turns the scope for
non-local variables into a chained map. Visual Basic has something (also
called "with") that is much more similar to what's being proposed.

Is there any reason not to simply implement a performance optimization
for the normal syntax? Is the behavior of code which reaches into the
parent frame and modifies its local variables guaranteed?


More information about the Python-ideas mailing list