[Python-Dev] Why are contexts also managers? (was r45544 - peps/trunk/pep-0343.txt) (original) (raw)

A.M. Kuchling amk at amk.ca
Wed Apr 19 15:00:25 CEST 2006


On Wed, Apr 19, 2006 at 10:00:21PM +1000, Nick Coghlan wrote:

And the parenthetical comment was completely backwards and should have read:

(This means that all context managers are contexts, but not all contexts are context managers). The reason for recommending that context managers should be contexts is similar to the reason that iterators should be iterables - so that doing the context() call manually will still give you something that can be used in a with statement.

So the intention is to enable something like:

ctx = lock.context() with ctx: ...

Which works as long as people don't try to use the context in two nested 'with' statements. Fair enough. I don't think I'll suggest doing this in the "What's New", though. :)

--amk



More information about the Python-Dev mailing list