
Hi all, decorators are a very powerful feature in python, but it's syntax is strangely restrictive. decorator ::= "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE for 99% of cases this is not a hindrance, but sometimes we'd rather be able to use full expression syntax. consider the following example (using PyQt): # make 10 buttons buttons = [QPushButton(f'button #{i}') for i in range(10)] # for now we only want to bind an event to the first button @buttons[0].clicked.connect def foo(): ... # do whatever in cases such as this, it would be useful to have any expression acceptable as a decorator. In addition to other use cases such as chained function calling (@buttons_dict.get("foo"). clicked.connect), the restrictiveness of the decorator syntax seems like a strange oversight. Arbitrary expressions are already allowed in decorator lines as arguments, so allowing them as the called decorator shouldn't be too difficult. Any thoughts on this?

I’ve always resisted changing this, but it keeps coming up, and in other cases we don’t restrict the grammar (except when there are real ambiguities). So maybe the SC can accept a PRP for this? On Mon, Feb 3, 2020 at 15:47 Ben Avrahami <avrahami.ben@gmail.com> wrote:
-- --Guido (mobile)

On 2/4/2020 4:07 AM, Ben Avrahami wrote:
PEP-318 references https://mail.python.org/pipermail/python-dev/2004-August/046711.html. And there have been a number of other discussions about it over the years. I think mostly on python-ideas, if you want to go searching for them. Eric

Yes, it requires a PEP -- note that I am not longer the decider, and none of the core devs will want to take responsibility for such a change of heart, so it has to go to the Steering Council. And the easiest way for that is a PEP. On Tue, Feb 4, 2020 at 02:04 Eric V. Smith <eric@trueblade.com> wrote:
-- --Guido (mobile)

This has struck me as unnecessarily restrictive ever since I first bumped up against it. I think that the reoccurring threads on this topic, the availability of awful (and inefficient) hacks to circumvent this restriction, and the presentation here of a legitimate use case are all solid arguments in favor of relaxing it.
So maybe the SC can accept a PRP for this?
I'd be willing to draft a PEP and accompanying implementation if there's a core dev to sponsor it.

I'll sponsor. On Tue, Feb 4, 2020 at 9:43 AM Brandt Bucher <brandtbucher@gmail.com> wrote:
-- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-c...>

Great! I'll begin work on this soon and reach out to you when I have something. Thanks, Ben, for bringing this up.
participants (5)
-
Ben Avrahami
-
Brandt Bucher
-
Eric V. Smith
-
Guido van Rossum
-
Soni L.