New assignmens ...
Paulo da Silva
p_d_a_s_i_l_v_a_ns at nonetnoaddress.pt
Fri Oct 22 21:10:51 EDT 2021
Às 20:34 de 22/10/21, Chris Angelico escreveu:
> On Sat, Oct 23, 2021 at 6:24 AM Jon Ribbens via Python-list
> <python-list at python.org> wrote:
>> On 2021-10-22, Stefan Ram <ram at zedat.fu-berlin.de> wrote:
>>> Paulo da Silva <p_d_a_s_i_l_v_a_ns at nonetnoaddress.pt> writes:
>>>> Why doesn't this work
>>>> if (self.ctr:=self.ctr-1)<=0:
>>>> while this works
>>>> if (ctr:=ctr-1)<=0:
>>> assignment_expression ::= [identifier ":="] expression,
>>> but the attribute references "self.ctr" is no identifier!
>> This seems a surprising omission. You'd expect at least 'attributeref'
>> and 'subscription' to be allowed, if not the whole of 'target'.
> That's not the primary use-case for assignment expressions, and they
> were highly controversial. It is much easier to expand it afterwards
> than to restrict it, or to have the feature rejected because people
> are scared of some small aspect of it.
> If you want to propose relaxing the restrictions, make your use-case
> and attempt to convince people of the value.
Well, I didn't follow the discussion of this new feature, but the reason
I can see behind allowing it seems so valid for for ctr:=ctr-1 as for
self.ctr:=self.ctr-1. The kind of use is exactly the same. One is for a
normal function, the other for a method.
IMHO this makes no sense at all. Arguable may be for example LHS
ctrs[i], or something like that. But self.ctr ...! Too weird.
More information about the Python-list