[Python-Dev] (name := expression) doesn't fit the narrative of PEP 20

Łukasz Langa lukasz at langa.pl
Wed Apr 25 17:06:47 EDT 2018


> On 25 Apr, 2018, at 1:24 PM, Chris Angelico <rosuav at gmail.com> wrote:
> 
> On Thu, Apr 26, 2018 at 6:21 AM, Łukasz Langa <lukasz at langa.pl> wrote:
>> := also goes against having one obvious way to do it. Since it's an expression,
>> it can also be placed on its own line or in otherwise weird places like
>> function call arguments. I anticipate PEP 8 would have to be extended to
>> explicitly discourage such abuse. Linters would grow rules against it. This is
>> noise.
> 
> Does this argument also apply to the if/else expression? Do linters
> need rules to advise against people writing code like:
> 
> print(x) if x is None else print(y)
> 
> ? It's perfectly legal to write code like this. But I don't see people
> abusing this sort of thing.

Ternary expressions are different because their flow is deliberately different
from a regular if statement.  It's also different from the C equivalent.
`:=` on the other hand is deciptively similar to `=`.

But yeah, I think worrying about abuse of the feature is a red herring.  The
gist of my criticism of your PEP is about the decreased balance in information
density.

-- Ł
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Message signed with OpenPGP
URL: <http://mail.python.org/pipermail/python-dev/attachments/20180425/8b397bea/attachment.sig>


More information about the Python-Dev mailing list