On 7/8/2018 1:59 PM, Chris Angelico wrote:
On Mon, Jul 9, 2018 at 3:55 AM, Eric V. Smith <e...@trueblade.com> wrote:
I agree with Chris in this case. That said, there is at least one place
where the grammar does forbid you from doing something that would otherwise
make be allowable: decorators.

@lookup[0]
   File "<stdin>", line 1
     @lookup[0]
            ^
SyntaxError: invalid syntax

But this works:

new_decorator = lookup[0]
@new_decorator
... def f(): pass

Thus, the idea of restricting the type of expression that can be used in
particular circumstances is not without precedent, and should not be
dismissed at face value. That is, unless we want to remove the restriction
on decorators, which I'm okay with, too. I have occasionally wanted to do
something more complicated with a decorator, and used the workaround above.


This is true. I wasn't around when decorator syntax was discussed;
what were the reasons for this being the way it is? It isn't simply
"'@' test".

I was around, but I don't recall the exact reasoning. Something along the lines of YAGNI, I believe.

The first reference I found to it is https://mail.python.org/pipermail/python-ideas/2009-September/005623.html, although surely there are older ones, and even this email references an older super-confusing use of lambdas in decorators.

In any event, I see no reason to restrict where assignment expressions can be used.

Eric

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to