+ 2

Is there any way such that we can continue working in a function even after using return feature

18th Jun 2020, 3:41 PM
Krishna Agrawal
Krishna Agrawal - avatar
8 ответов
+ 6
If you are okay with workarounds, you could choose yield instead of return. With yield, you'll get a generator object that preserves its status, so that next time you call it, the body picks off where it stopped last time. Strange demonstration: def greetEveryone(): print('Hello', end=' ') yield print('World') yield gen = greetEveryone() next(gen) next(gen) Probably there's a much simpler way for whatever you want to do. If you give us more details, we can keep looking together.
18th Jun 2020, 4:10 PM
HonFu
HonFu - avatar
+ 5
A generator function creates a generator object that remembers its current state. Using next, code is executed up to the next yield, as long as you haven't reached the bottom of the function body (in this example you can call next two times). greetEveryone() creates a *new* object of that sort, so the process starts from the top. Your first example passes a new generator object to next each time, so you'll get the first yield value of two separate objects. In the second version, you *store* the generator object, so you can iteratively call next on it and get further down within the body.
18th Jun 2020, 6:03 PM
HonFu
HonFu - avatar
+ 4
Only if you have a finally block. Still thinking, but I'm almost sure it's the only option...
18th Jun 2020, 3:51 PM
Sandra Meyer
Sandra Meyer - avatar
+ 1
Something tells me is just conditional statement you need to get pass your problem. But the information you provided isn't even enough to help you. Better still provide a link to your code.
18th Jun 2020, 4:21 PM
MILES CODER
MILES CODER - avatar