<div dir="ltr"><div>I completely understand your perspective, and agree with most of it. It doesn't add new expressiveness, it adds a bit of polish (and I think completeness) to the relatively new concept of 'with' statements. <br></div><div><br></div><div>Is this so intuitive that we don't actually have to teach it? <br></div><div>Is it such a natural extension to 'with', that it would immediately be weird to find it missing in the future?</div><div><br></div><div>If the answer to either of those questions is 'no', then I absolutely retract my idea.<br></div><div> <br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 22, 2019 at 3:22 PM Steven D'Aprano <<a href="mailto:steve@pearwood.info">steve@pearwood.info</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, Jan 22, 2019 at 01:11:10PM -0700, Paul Ferrell wrote:<br>
<br>
[...]<br>
> I would like to propose that the syntax for 'with' blocks<br>
> be changed such that they can be accompanied by 'except', 'finally',<br>
> and/or 'else' blocks as per a standard 'try' block.<br>
<br>
What benefit does this give apart from saving one line and one indent? <br>
If either is in short supply, the code probably needs refactoring, not <br>
new syntax.<br>
<br>
The beauty of the current syntax is that try...except and with blocks <br>
are fully independent, composable blocks which can be learned and <br>
reasoned about seperately. You're proposing to add a new special-case <br>
syntax:<br>
<br>
    while ...<br>
    except ...<br>
<br>
that adds a new block structure that has to be implemented, documented, <br>
tested, maintained, taught and learned. It will inevitably lead to <br>
questions on mailing lists, IRC and Stackoverflow asking what is the <br>
difference between a separate try...with...except and a with...except, <br>
and when to choose one or the other.<br>
<br>
And of course then there will be the inevitable requests that we <br>
generalise it to other blocks:<br>
<br>
    for ...<br>
    except ...<br>
<br>
    while ...<br>
    except ...<br>
<br>
If this will allow us to write more expressive code, or do things we <br>
couldn't easily do before, then it might be worthwhile to add this <br>
additional complexity.<br>
<br>
But if all it does is save one line and one indent, then I believe it is <br>
redundant and I would be against it.<br>
<br>
<br>
-- <br>
Steve<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/codeofconduct/</a><br>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr">Paul Ferrell<div><a href="mailto:pflarr@gmail.com" target="_blank">pflarr@gmail.com</a></div></div></div></div></div>