<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, Jun 15, 2018 at 10:25 AM Mikhail V <<a href="mailto:mikhailwas@gmail.com">mikhailwas@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">very uncommon to see standalone statements like: x.method()<br></blockquote><div><br></div><div>Python has many such mutation methods. It sounds like you're judging the frequency of code patterns across all languages instead of just Python. Even then, I don't think that's true. All OO languages that come to mind have that pattern frequently.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">As for x+=1 it is implementation detail - historical idea of such operators was<br>
mutating, so at least visually its not like a returning expression.<br></blockquote><div><br></div><div>Incorrect. The += operator was meant as an alias for ``x = x + 1``. The fact that it mutates a list is somewhat of a surprise. Some other languages make no distinction between mutation and reassignment. Perhaps you're thinking of one of those other languages.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
and I am not sure about x.method() form - was it meant to hint to the user<br>
about anything? It seemed to me so when I started to learn Python, but its not.<br></blockquote><div><br></div><div>Yes, it returns None to emphasize that it's a mutation. This is different from the so-called "fluent" design pattern where all mutation methods also return the original object, causing confusion about whether the return value is a copy or not.</div><div> </div></div></div>