[EMAIL PROTECTED] wrote:
Terry Reedy:
A 'function' only needs to be nested if it is intended to be
different (different default or closure) for each execution of its
def.<
Or maybe because you want to denote a logical nesting, or maybe
because you want to keep the outer namespace cleaner, etc etc.
I was already aware of those *wants*, but they are not *needs*, in the
sense I meant. A single constant function does not *need* to be nested
and regenerated with each call.
A standard idiom, I think, is give the foo-associated function a private
foo-derived name such as _foo or _foo_bar. This keeps the public
namespace clean and denotes the logical nesting. I *really* would not
move things around after testing.
For the attribute approach, you could lobby for the so-far rejected
def foo(x):
return foo.bar(3*x)
def foo.bar(x):
return x*x
In the meanwhile...
def foo(x):
return foo.bar(3*x)
def _(x):
return x*x
foo.bar = _
Or write a decorator so you can write
@funcattr(foo. 'bar')
def _
(I don't see any way a function can delete a name in the namespace that
is going to become the class namespace, so that
@fucattr(foo)
def bar...
would work.)
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list