4 ms·
The least they could have done is sugared it to something that isn't "def", like "gen" or "defgen"
by throwawaymaths 4y ago
The least they could have done is sugared it to something that isn't "def", like "gen" or "defgen"
- jborean93 4y agoUnless I'm misunderstanding your comment they do, it's `async def` to denote a coroutine.
- dekhn 4y agoThey're referring to generator functions. A generator function typically open a resource and then use a for loop to read (for example) a line at a time and yield it. once you yield, control returns to the caller (like a return) but subsequent calls to next on the returned expression pick back up at the yield point. So function calls maintain state-behind-the-scenes. It's not just a simple call-and-return model anymore. To me this violates a core principle: the principle of least surprise. It completely changes how I have to reason about function execution, especially if there are conditionals and different yields.
- nicwolff 4y agoIt's the buried `yield` in a loop somewhere, magically changing your function into a generator, that can be confusing – it's on the original coder to have the docstring say `"""Generator yielding records from DB."""` or something.