Willem Broekema wrote:
> 
> I have a simple recursive function in a Python method that gives a
> NameError (2.2.4 on Win98).
> 
> The function (in PM named 'rec'):
> ---
> def myfunc(i):
>   if i >= 10: return myfunc(1)
>   else: return 1
> 
> return myfunc(11)
> ---
> 
> The end of the traceback:
> ---
> File c:\myzopeinstance\...cts\PythonMethod\PythonMethod.py, line 168, in
> __call__
>     (Object: rec)
>     (Info: ((), {}, None))
> File <string>, line 6, in rec
>     (Object: myfunc)
> File <string>, line 3, in myfunc
> NameError: (see above)
> ---
> 
> Isn't it allowed to have a recursive function here?

Yes, but that's not your problem.  Your problem is it can't resolve the
name 'myfunc'.  You need to say self.rec(1) if you are using old python
methods (and make sure self is a parameter), or self.myfunc(1) if you
are using new ones.  Do you see why?  The python corollary:

class Foo:

  def myfunc(self, i):
    if i >= 10: return self.myfunc(1)
    else: return 1

-Michel

_______________________________________________
Zope maillist  -  [EMAIL PROTECTED]
http://lists.zope.org/mailman/listinfo/zope
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://lists.zope.org/mailman/listinfo/zope-announce
 http://lists.zope.org/mailman/listinfo/zope-dev )

Reply via email to