[Python-Dev] (name := expression) doesn't fit the narrative of PEP 20
Wes Turner
wes.turner at gmail.com
Fri Apr 27 18:26:13 EDT 2018
It's certainly a contrived example. Actual code with such a mistake is
generally far more subtle.
The mistake is that it's assigning a value within a clause of a conditional
that won't be evaluated.
Oh well. I'll suffer the then worsened zig-zaggy eye movements in code
reviews caused by defining values at the end of expressions that reference
them which fit on a single line.
There are a number of bad examples for style guides in these threads.
:=
I wasn't aware of this switch, thanks!
http://coverage.readthedocs.io/en/latest/branch.html
coverage run --branch code.py
On Friday, April 27, 2018, Tim Peters <tim.peters at gmail.com> wrote:
> Wes, sorry, but I really don't follow what you're saying. For example,
>
> [Wes Turner <wes.turner at gmail.com>]
> > Do not do this:
> >
> > x = 2
> > if (x == 3) or (x := 3):
> > print(x)
> >
> > What do we call that mistake?
>
> It displays 3 - while it appears to be silly code, there's nothing
> about it that's undefined. So I fail to see how showing that example
> anywhere would do anyone any good.
>
> You can do the same kind of thing today via, e.g.,
>
> class Bindable:
> def __init__(self, value):
> self.bind(value)
>
> def bind(self, value):
> self.value = value
> return value
>
> def __bool__(self):
> return bool(self.value)
>
> def __eq__(self, other):
> return self.value == other
>
> def __str__(self):
> return str(self.value)
>
> Then:
>
> >>> x = Bindable(2)
> >>> if x == 3 or x.bind(3):
> ... print(x)
> 3
>
> And I wouldn't put that example anywhere in any docs either ;-)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20180427/6c3be8f9/attachment.html>
More information about the Python-Dev
mailing list