[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