On Sunday, November 17, 2013 2:24:19 PM UTC-5, John Ladasky wrote:
> Hi, folks,
>
> Here's a minimal Python 3.3.2 code example, and its output:
>
> =================================================
>
> def foo():
> pass
>
> print(foo)
> bar = foo
> print(bar)
>
> =================================================
>
> <function foo at 0x7fe06e690c20>
> <function foo at 0x7fe06e690c20>
>
> =================================================
>
> Obviously, Python knows that in my source code, the name that was bound to
> the function I defined was "foo". The print function even returns me the
> name "foo" when I bind a new name, "bar", to the same function. This is
> useful information that I would like to obtain directly, rather than having
> to extract it from the output of the print statement. How can I do this?
> Thanks.
Functions have a __name__ attribute, which is the name they were defined as:
>>> def foo(): pass
...
>>> foo.__name__
'foo'
>>> bar = foo
>>> bar.__name__
'foo'
Like many statements in Python, the def statement is really performing an
assignment, almost as if it worked like this:
foo = function_thing(name="foo", code=......)
The function object itself has a name, and is also assigned to that name, but
the two can diverge by reassigning the function to a new name.
--Ned.
--
https://mail.python.org/mailman/listinfo/python-list