What's the use of changing func_name?

Robert Kern rkern at ucsd.edu
Thu May 19 02:04:34 EDT 2005


could ildg wrote:
> def a(func):
>     def _inner(*args, **kwds):
>         print "decorating..."
>         return func(*args, **kwds)
>     _inner.func_name = func.func_name -->when I delete this line, the
> rusult is the same. why?
>     return _inner
> 
> @a
> def g(*args):
>     for x in args:
>         print x
>     print "this is in function g"
> 
> g(1,2,3,4,5)
> 
> func_name is writable in python 2.4. I wonder what's the use of
> writing it. Consider the code above, to change the func_name or not
> will get the completely same result. The result is as
> below:
> 
> decorating...
> 1
> 2
> 3
> 4
> 5
> this is in function g
> 
> Please tell me how does this happen, thank you~

Well, the function you posted certainly doesn't change the literal 
string you have inside when you change its func_name. However, the 
function object *does* change.

In [1]:def g(x):
    ...:    pass
    ...:

In [2]:g
Out[2]:<function g at 0x5aedf0>

In [3]:g.func_name = 'f'

In [4]:g
Out[4]:<function f at 0x5aedf0>

-- 
Robert Kern
rkern at ucsd.edu

"In the fields of hell where the grass grows high
  Are the graves of dreams allowed to die."
   -- Richard Harter




More information about the Python-list mailing list