On 07/16/2015 04:46 PM, Chris Angelico wrote:
Examples:# derived from Paul Rubin's example def quicksort(array, start, end): midp = partition(array, start, end) if midp <= (start+end)//2: quicksort(array, start, midp) transfer quicksort(array, midp+1, end) else: quicksort(array, midp+1, end) transfer quicksort(array, start, midp) def count_usage(func): @functools.wraps(func) def wrapper(*args, **kwargs): wrapper.usage += 1 transfer func(*args, **kwargs) wrapper.usage = 0 return wrapper Semantics: * Evaluate the function and all its arguments, exactly as per a current function call. * Leaving them on the stack, remove the current call frame and dispose of all its objects. * Finally, construct a new stack frame for the target function and transfer control to it. In effect, "transfer f()" is equivalent to "return f()", except that the current function finishes before the target is entered.
Sounds cool! Code it up and let us know how it goes. :) -- ~Ethan~ -- https://mail.python.org/mailman/listinfo/python-list
