Thanks for the reply! Is this really deserving of a PEP? It's such a minor change in the language, can't it be resolved as a python issue?

Out of curiosity, why have you always resisted changing this?

On Tue, Feb 4, 2020 at 2:08 AM Guido van Rossum <> wrote:
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 <> wrote:
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
    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?
Python-ideas mailing list --
To unsubscribe send an email to
Message archived at
Code of Conduct:
--Guido (mobile)