exec and locals

Steven D'Aprano steve at pearwood.info
Wed Feb 26 23:39:26 EST 2014


On Thu, 27 Feb 2014 16:34:33 +1300, Gregory Ewing wrote:

> Steven D'Aprano wrote:
>>     except SyntaxError:
>>         def inner():
>>             # manually operate the context manager call context manager
>>             __enter__
>>             try:
>>                 try:
>>                     return something
>>                 except:  # Yes, a bare except. Catch EVERYTHING.
>>                     blah blah blah
>>             finally:
>>                     call context manager __exit__
> 
> Why not just use this version all the time? It should work in both 2.x
> and 3.x.

Because that's yucky. It's an aesthetic thing: when supported, I want the 
Python interpreter to manage the context manager.

The exec part is only half a dozen lines, only three lines of source 
code. It's no burden to keep it for the cases where it works (that is, at 
least 2.6 onwards).


-- 
Steven



More information about the Python-list mailing list