[Python-Dev] Re: method decorators (PEP 318)
Samuele Pedroni
pedronis at bluewin.ch
Tue Mar 30 10:01:40 EST 2004
At 09:50 30.03.2004 -0500, Phillip J. Eby wrote:
>At 10:38 PM 3/29/04 -0500, Shane Hathaway wrote:
>>On 03/29/04 18:51, Greg Ewing wrote:
>>>Shane Hathaway <shane at zope.com>:
>>>
>>>>That would be nice, but here is what I would like it to mean:
>>>>
>>>> def _f():
>>>> do_something()
>>>> lock(foo)(_f)
>>>
>>>But what about
>>> x = 17
>>> with lock(foo):
>>> x = 42
>>> print x
>>>?
>>
>>Hmm, yep, that won't work. A pity.
>
>It would work if the code in the block was treated as a nested scope but
>with write access to the immediately surrounding scope. But that's quite
>a bit of compiler change, I'd imagine. Anyway, this is one of the very
>few places where I'd actually be in favor of allowing rebinding variables
>from an enclosing scope.
Umph, that's totally OT wrt 318, and we had this whole discussion at this
informal nice-to-have level at the beginning of last year. No point
rehashing that at that level of (non-)depth.
If someone want this or something like this, then please write a PEP and
preferably an implementation.
Just to recall from the top of my head, open issues are:
- what to do about break/continue, they become kind of variable-geometry
- if what is wanted is a real imitation of a control flow statement suite,
one problem is that 'yield'
cannot be supported in there without removing the "simple" from simple
generators. But if this thing just look like a ctrl-flow block but is not
really like one, then isn't the syntax confusing? practicality beats purity
or not?
- what 'return' should mean there, non-local return like in Smalltalk
- syntax for passing parameters (?), how to have the block possibly give
back values, do we want that? new keyword, last expression ...
regards.
More information about the Python-Dev
mailing list