<div dir="ltr"><div><div><div><div><div><div><div>It was not my intention to declare those to be similar, just as a furthering train of thought. I agree that using "as" is a much more Pythonic syntax. I'm sure there was (and will be) some discussion as to whether it should operate like "if foo:" or "if foo is not None:". I'll look a bit further into the archives than I did to find previous discussions. For now, I'm a fan of:<br><br></div>if get_foo() as foo:<br></div>    bar(foo)<br><br></div>to replace the "if foo:" version:<br><br></div>foo = get_foo()<br></div>if foo:<br></div>    bar(foo)<br></div>del foo<br></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Oct 17, 2016 at 6:18 PM Chris Angelico <<a href="mailto:rosuav@gmail.com">rosuav@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Oct 18, 2016 at 9:11 AM, Michael duPont <<a href="mailto:michael@mdupont.com" class="gmail_msg" target="_blank">michael@mdupont.com</a>> wrote:<br class="gmail_msg">
> What does everyone think about:<br class="gmail_msg">
><br class="gmail_msg">
> if foo = get_foo():<br class="gmail_msg">
>     bar(foo)<br class="gmail_msg">
><br class="gmail_msg">
> as a means to replace:<br class="gmail_msg">
><br class="gmail_msg">
> foo = get_foo()<br class="gmail_msg">
> if not foo:<br class="gmail_msg">
>     bar(foo)<br class="gmail_msg">
> del foo<br class="gmail_msg">
><br class="gmail_msg">
> Might there be some better syntax or a different keyword? I constantly run into this sort of use case.<br class="gmail_msg">
<br class="gmail_msg">
I'm pretty sure that syntax is never going to fly, for a variety of<br class="gmail_msg">
reasons (to see most of them, just read up a C style guide). But this<br class="gmail_msg">
syntax has been proposed now and then, analogously with the 'with'<br class="gmail_msg">
statement:<br class="gmail_msg">
<br class="gmail_msg">
if get_foo() as foo:<br class="gmail_msg">
    bar(foo)<br class="gmail_msg">
<br class="gmail_msg">
Be careful of your definitions, though. You've said these as equivalent:<br class="gmail_msg">
<br class="gmail_msg">
if foo = get_foo():<br class="gmail_msg">
    bar(foo)<br class="gmail_msg">
<br class="gmail_msg">
foo = get_foo()<br class="gmail_msg">
if foo is not None:<br class="gmail_msg">
    bar(foo)<br class="gmail_msg">
<br class="gmail_msg">
foo = get_foo()<br class="gmail_msg">
if not foo:<br class="gmail_msg">
    bar(foo)<br class="gmail_msg">
del foo<br class="gmail_msg">
<br class="gmail_msg">
There are three quite different conditions here. Your last two are<br class="gmail_msg">
roughly opposites of each other; but also, most people would expect<br class="gmail_msg">
"if foo = get_foo()" to be the same condition as "if get_foo()", which<br class="gmail_msg">
is not the same as "if get_foo() is not None". The semantics most<br class="gmail_msg">
likely to be accepted would be for "if get_foo() as foo:" to use the<br class="gmail_msg">
standard boolification rules of Python (and then make 'foo' available<br class="gmail_msg">
in both 'if' and 'else' blocks). Would you support that? If so, check<br class="gmail_msg">
out some of the previous threads on the subject - this is far from the<br class="gmail_msg">
first time it's been discussed, and most likely won't be the last.<br class="gmail_msg">
<br class="gmail_msg">
ChrisA<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
Python-ideas mailing list<br class="gmail_msg">
<a href="mailto:Python-ideas@python.org" class="gmail_msg" target="_blank">Python-ideas@python.org</a><br class="gmail_msg">
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br class="gmail_msg">
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" class="gmail_msg" target="_blank">http://python.org/psf/codeofconduct/</a><br class="gmail_msg">
</blockquote></div>