<div class="gmail_quote">On 10 February 2012 20:16, Dirkjan Ochtman <span dir="ltr"><<a href="mailto:dirkjan@ochtman.nl">dirkjan@ochtman.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">There are some simple patterns that are great with refcounting and not</div>
so great with garbage collection. We encountered some of these with<br>
Mercurial. IIRC, the basic example is just<br>
<br>
open('foo').read()<br>
<br>
With refcounting, the file will be closed soon. With garbage<br>
collection, it won't. Being able to rely on cleanup per frame/function<br>
call is pretty useful.</blockquote><div><br></div><div>This is the #1 anti-pattern that shouldn't be encouraged. Using this idiom is just going to cause problems (mysterious exceptions while trying to open files due to running out of file handles for the process) for anyone trying to port your code to other implementations of Python.</div>
<div><br></div><div>If you read PEP 343 (and the various discussions around that time) it's clear that the above anti-pattern is one of the major driving forces for the introduction of the 'with' statement.</div>
<div><br></div><div>Tim Delaney</div></div>