<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Sep 28, 2015 at 1:38 PM, Ben Finney <span dir="ltr"><<a href="mailto:ben+python@benfinney.id.au" target="_blank">ben+python@benfinney.id.au</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Guido van Rossum <<a href="mailto:guido@python.org">guido@python.org</a>> writes:<br>
<br>
> This seems a perfect use case for writing post?.tag.lower() -- this<br>
> signifies that post may be None but if it exists, post.tag is not<br>
> expected to be None. So basically I want the equivalent of<br>
> (post.tag.lower() if post is not None else None).<br>
<br>
</span>You're deliberately choosing straightforward examples. That's fine for<br>
showing the intended use case, but it does mean dismissing the concerns<br>
about ambiguity in complex cases.<br>
<br>
It also means the use cases are so simply they are easily expressed<br>
succinctly with existing syntax, with the advantage of being more<br>
explicit in their effect; so they don't argue strongly for the need to<br>
add the new syntax.<br>
<br>
So, the corner case examples in this thread, which mix up precedence,<br>
are useful because they show how confusion is increased by making the<br>
precedence and binding rules more complicated.<span class="HOEnZb"></span><br></blockquote></div><br></div><div class="gmail_extra">But your argument seems to boil down to "it is possible to write obfuscated code using this feature".<br><br></div><div class="gmail_extra">If you want to dumb down the feature so that foo?.bar.baz means just (foo?.bar).baz then it's useless and I should just reject the PEP.<br clear="all"></div><div class="gmail_extra"><br>-- <br><div class="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div></div>