Szabolcs Berecz wrote: > On 14 Apr 2006 04:37:54 -0700, [EMAIL PROTECTED] > <[EMAIL PROTECTED]> wrote: > >>def a(): >> def b(): >> print "b" >> def c(): >> print "c" >> >>how can i call c() ?? > > > Function c() is not meant to be called from outside function a(). > That's what a nested function is for: localizing it's usage and > prevent cluttering the global namespace
There's actually more than this about Python's nested functions: they can be returned from the outer function and then carry the environnement in which they where created: def trace(func): fname = func.__name__ def traced(*args, **kw): print "calling func %s with *%s, **%s" % (fname, str(args), kw) try: result = func(*args, **kw) except Exception, e: print "%s raised %s" % (fname, e) raise else: print "%s returned %s" % (fname, str(result)) return result return traced def test(arg1, arg2='parrot'): print "in test, arg1 is %s" % arg1 return arg2 * 3 test = trace(test) test(42) -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list