osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


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 ;-)