[Python-Dev] anonymous blocks
Alex Martelli
aleaxit at yahoo.com
Wed Apr 20 04:07:45 CEST 2005
On Apr 19, 2005, at 15:57, BJörn Lindqvist wrote:
>> RSMotD (random stupid musing of the day): so I wonder if the decorator
>> syntax couldn't be extended for this kind of thing.
>>
>> @acquire(myLock):
>> code
>> code
>> code
>
> Would it be useful for anything other than mutex-locking? And wouldn't
Well, one obvious use might be, say:
@withfile('foo.bar', 'r'):
content = thefile.read()
but that would require the decorator and block to be able to interact
in some way, so that inside the block 'thefile' is defined suitably.
> it be better to make a function of the block wrapped in a
> block-decorator and then use a normal decorator?
From a viewpoint of namespaces, I think it would be better to have the
block execute in the same namespace as the code surrounding it, not a
separate one (assigning to 'content' would not work otherwise), so a
nested function would not be all that useful. The problem might be,
how does the _decorator_ affect that namespace. Perhaps:
def withfile(filename, mode='r'):
openfile = open(filename, mode)
try:
block(thefile=openfile)
finally:
openfile.close()
i.e., let the block take keyword arguments to tweak its namespace (but
assignments within the block should still affect its _surrounding_
namespace, it seems to me...).
Alex
More information about the Python-Dev
mailing list