[Python-ideas] A "local" pseudo-function

Paul Moore p.f.moore at gmail.com
Sat Apr 28 05:09:09 EDT 2018


On 28 April 2018 at 03:37, Tim Peters <tim.peters at gmail.com> wrote:
> Idea:  introduce a "local" pseudo-function to capture the idea of
> initialized names with limited scope.

This looks disturbingly good to me. I say "disturbingly" because the
amount of magic involved in that "function call" is pretty high, and
the more you look at it, the more weird its behaviour seems. I have
essentially no real world use cases for this, though (other than ones
that have been brought up already in the binding expression debate),
so my comments are purely subjective opinion.

[...]
> Everyone's favorite:
>
> if local(m = re.match(regexp, line)):
>     print(m.group(0))
>
> Here's where it's truly essential that the compiler know everything
> about "local", because in _that_ context it's required that the new
> scope extend through the end of the entire block construct (exactly
> what that means TBD - certainly through the end of the `if` block, but
> possibly also through the end of its associated (if any) `elif` and
> `else` blocks - and similarly for while/else constructs).

This is where, in my mind, the magic behaviour goes too far. I can see
why it's essential that this happens, but I can't come up with a
justification for it other than pure expediency. And while I know
"practicality beats purity" (look at me, daring to quote the Zen at
Tim!!! :-)) this just feels like a step too far to me.

Paul


More information about the Python-ideas mailing list