<div dir="ltr">I actually HAVE used this idiom moderately often.  But unless you use overly long names, the current spelling is no trouble at all.<div><br></div><div>In fact, it's not clear why your function is spelled as it is rather than with boolean shortcutting (assuming you like the shortcutting aesthetically).<br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 26, 2018 at 6:56 AM, Cammil Taank <span dir="ltr"><<a href="mailto:ctaank@gmail.com" target="_blank">ctaank@gmail.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>However, for completeness of the discussion, I want to indicate the primary intended use case:</div></div></blockquote><div> </div><span style="font-family:monospace,monospace">    def fn(x=None):</span><br><span style="font-family:monospace,monospace">        if not x:</span><br><div><div><font face="monospace, monospace">            x = some_complex_or_runtime_<wbr>dependent_result()</font></div></div><div><font face="monospace, monospace"><br></font></div><div><span style="color:rgb(34,34,34);font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;font-family:monospace,monospace">    def fn2(x=None):</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><span style="color:rgb(34,34,34);font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;font-family:monospace,monospace">        x = x or some_complex_or_runtime_<wbr>dependent_result()<br></span><br class="gmail-Apple-interchange-newline">It looks like the boolean shortcutting version makes a line one character longer; but it does save a line and an indent level.  Of course, if the 'not x' suite contains multiple statements, you need the 'if' either way.</div><div><br></div><div>If, as you write, the condition is actually 'x is not None', you want the suite for sure.  That's much better than a contorted ternary IMO.  There were a couple PEPs about "None-shortcutting" for this not-so-special case of comparing with None.  But also IMO, they all looked incredibly ugly for little benefit (lots of non-obvious syntax characters that look like Perl or APL)</div><div> </div></div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Keeping medicines from the bloodstreams of the sick; food <br>from the bellies of the hungry; books from the hands of the <br>uneducated; technology from the underdeveloped; and putting <br>advocates of freedom in prisons.  Intellectual property is<br>to the 21st century what the slave trade was to the 16th.<br></div>
</div></div></div>