On Wed, Apr 25, 2018 at 1:49 AM, Yury Selivanov
On Tue, Apr 24, 2018 at 11:34 AM, Steven D'Aprano
wrote: On Tue, Apr 24, 2018 at 11:05:57AM -0400, Yury Selivanov wrote:
Well, `my_func(a=(b:=foo))` or `my_func(b:=foo)` are also barely readable to my eye.
There's no advantage to using binding-expressions unless you're going to re-use the name you just defined, and that re-use will give you a hint as to what is happening:
my_func(arg, buffer=(buf := [None]*get_size()), size=len(buf))
Again, this is very subjective, but this code would fail my code review :)
Don't you find
buf = [None] * get_size() my_func(arg, buffer=buf, size=len(buf))
to be more readable?
Only if 'buf' is going to be used elsewhere. I'd be looking down below for some other use of 'buf'. Technically the same could be true of the inline assignment, but it makes more sense for a "this statement only" name binding to be within that statement, not broken out and placed above it as another operation at equal importance. ChrisA