A "scopeguard" for Python

Alf P. Steinbach alfps at start.no
Thu Mar 4 16:48:41 CET 2010


* Jean-Michel Pichavant:
> Alf P. Steinbach wrote:
>>>  From your post, the scope guard technique is used "to ensure some 
>>> desired cleanup at the end of a scope, even when the scope is exited 
>>> via an exception." This is precisely what the try: finally: syntax is 
>>> for. 
>>
>> You'd have to nest it. That's ugly. And more importantly, now two 
>> people in this thread (namely you and Mike) have demonstrated that 
>> they do not grok the try functionality and manage to write incorrect 
>> code, even arguing that it's correct when informed that it's not, so 
>> it's a pretty fragile construct, like goto.
> 
> You want to execute some cleanup when things go wrong, use try except. 
> You want to do it when things go right, use try else. You want to 
> cleanup no matter what happen, use try finally.
> 
> There is no need of any Cleanup class, except for some technical 
> alternative  concern.

Have you considered that your argument applies to the "with" construct?

You have probably not realized that.

But let me force it on you: when would you use "with"?

Check if that case is covered by your argument above.

Now that you've been told about the "with" angle, don't you think it's a kind of 
weakness in your argument that it calls for removing "with" from the language?

I recommend that you think about why your argument is invalid.

Or, as I like to say, why your argument is completely bogus.


Cheers & hth.,

- Alf



More information about the Python-list mailing list