On Sat, 19 Nov 2005 23:30:32 -0500, Mike Meyer <[EMAIL PROTECTED]> wrote:
>[EMAIL PROTECTED] writes: >> Thanks Diez and Peter, >> Just what I was looking for. In "Library Reference" heading >> 3.11.1 Types and members >> Running this yields the result >> >> cap(s, n) > >You've now got three solutions. They'll work fine most of the time, >but can't be trusted in general. Binding a name to a function doesn't >change the name that these solutions return, and the name they return >may no longer be bound to said function. Just a warning. > But the one buried in co_name seems to persist (barring byte code munging in the decorator ;-) >>> def fren(newname='newname'): ... def fren(f): ... f.__name__ = newname ... return f ... return fren ... >>> @fren('bar') ... def foo():pass ... Could have done that manually, but just playing. Ok, rebind foo and remove the old name, for grins >>> baz = foo >>> del foo See what we've got >>> dir() ['__builtins__', '__doc__', '__name__', 'baz', 'fren'] Check name(s) ;-) Local binding to the function object first: >>> baz <function bar at 0x02EEADF4> Its outer name: >>> baz.func_name 'bar' Its def name: >>> baz.func_code.co_name 'foo' Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list