NOmanlio_perilloSPAM at libero.it
Fri Oct 1 19:30:05 CEST 2004
On Thu, 30 Sep 2004 18:28:30 GMT, Andrew Dalke <adalke at mindspring.com>
>>>Try this as a alternate solution for your style
>>>of use. It's still not the right one because it
>>>doesn't handle reloads nor multiple functions
>>>created through exec's.
>Manlio Perillo wrote:
>> No, I don't want this. "Hello!" should be printed every times.
>I see. I was writing code to emulate C's "static" behaviour
>which is not what you wanted.
It's my fault.
It is long time I'm not using C++ that I forgot that static variable
function initialization is done once during program.
However firstlevel_call is what I want.
>> Here is a functions that returns True if the caller's 'recursion
>> depth' is 1.
>> Please check if this is correct.
>> return sys._getframe(1).f_code != sys._getframe(2).f_code
> > N.B.: sys._getframe(2) can raise an exception
>Looks like it should work, and be thread-safe. Again,
>I don't suggest using it. It's going to be slower than
>one where you use pass the stack depth in as a parameter.
>It's also going to depend on implmentation behaviour.
>Someday a Python system may not instantiate the stack
>information until it's requested, causing a big run-time
>hit. But that's only theoretical.
>> Sorry, I don't understand.
>> Here is my_function:
>> def my_function(a, b, *args, **kwargs):
>> print 'a, b, args, kwargs:', a, b, args, kwargs
>That's not recursive, so I don't know how to
>interpret your question.
This is only the function signature!
The problem is that I can't do:
def my_function(a, b, *args, **kwargs, __max_depth = 4): ...
The only way is to do:
def my_function(a, b, max_depth = 4, *args, **kwargs): ...
But in this way max_depth is 'exposed' to public.
In the first example it is private.
>Let's suppose you're
>doing Ackermann's function
>def Ackermann(m, n):
> if m == 0:
> return n+1
> if n == 0:
> return Ackermann(m-1, 1)
> return Ackermann(m-1, Ackermann(m, n-1))
What's the purpose of such a function?
Thanks and regards Manlio Perillo
More information about the Python-list