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 -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/WOWD4P323DYDIGUQVWMESDWUG6QOW4MP/
Code of Conduct: http://python.org/psf/codeofconduct/