31.05.22 16:21, Chris Angelico пише:
On Tue, 31 May 2022 at 23:00, Aaron L via Python-ideas
<[email protected]> wrote:
After getting used to writing async functions, I’ve been wanting use a similar
syntax to declare generator functions.
What's the advantage? You can just use normal function syntax to
define them, and it works correctly. Do you need the ability to
declare that it's a generator even without any yields in it?
The advantage is that you cannot accidentally turn a function into a
generator by adding "yield". If the result of the call is ignored (it is
expected to be None), this bug can live a long time. It is a common
issue: test containing yield always passes. Since 3.11 the unittest
module emits a warning if a test method returns not None, but it will
not solve all problems: the test can call helpers, and if they are
generators, the call is virtually no-op. This error can also occur in
non-test code.
Asynchronous functions are more reliable. "async" is mandatory, and if
you do not await the result of an asynchronous function call you will
get a loud warning. I think it is a time to apply the same approach to
generator functions.
_______________________________________________
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/HMZN43AEMLOWXHCMITMMU5QHHJLPEPYY/
Code of Conduct: http://python.org/psf/codeofconduct/