Finding the name of a function while defining it

Steven D'Aprano steve+comp.lang.python at pearwood.info
Thu Dec 27 07:59:09 EST 2012


On Tue, 25 Dec 2012 22:11:28 -0500, Roy Smith wrote:

> I've only ever wanted the name.  If you need the actual function object,
> I suppose you might eval() the name, or something like that.

Oh look, I found a peanut! Let me get a 50lb sledgehammer to crack it 
open!

*wink*

Please do not use eval to retrieve the function object. It's slow, 
overkill, a bad habit to get into, and a security risk if the name you 
are eval'ing comes from an untrusted source.

Instead, look the name up in globals() or locals():


py> def spam():
...     return "NOBODY expects the Spanish Inquisition!"
...
py> name = "spam"
py> func = globals()[name]
py> func()
'NOBODY expects the Spanish Inquisition!'



-- 
Steven



More information about the Python-list mailing list