Returning from a multiple stacked call at once

jak nospam at please.ty
Tue Dec 15 05:52:00 EST 2020


Il 15/12/2020 10:41, jak ha scritto:
> Il 12/12/2020 18:20, Dieter Maurer ha scritto:
>> ast wrote at 2020-12-12 07:39 +0100:
>>> In case a function recursively calls itself many times,
>>> is there a way to return a data immediately without
>>> unstacking all functions ?
>>
>> Python does not have "long jump"s (out of many functions, many loop
>> incarnations).
>> In some cases, you can use exceptions to emulate "long jump"s.
>>
> 
> I don't know what you mean by 'emulating' because using the exception 
> handler you simply defer unstacking to it. The real problem is that if 
> you write a function that ends by calling itself and does not take 
> advantage of the branch of code following the recursive call, then it is 
> a wrong way to use a recursive function which should be replaced with a 
> simple one containing a loop where you can insert a break statement 
> wherever you like. IMHO
> 
> Greetings.


this could be a way to emulate a long_jump:

def f(i):
     if i < 10:
         i += 1
         yield from f(i)
     else:
         yield i

i = 0
retult = 0
for n in f(i):
     result = n
     break
print(result)



More information about the Python-list mailing list