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....@gmail.com> 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 > @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? > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/WOWD4P323DYDIGUQVWMESDWUG6QOW4MP/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- --Guido (mobile)
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/FKE7ZFGUDCU5WVOE2QTD5XGMCNCOMETV/ Code of Conduct: http://python.org/psf/codeofconduct/