Accessing the name of an actual parameter

Alf P. Steinbach alfps at start.no
Tue Jan 26 07:01:13 EST 2010


* Hellmut Weber:
> 
> consider the following piece of code, please
> 
> ----- -----
> 
> def f(param):
>   nameOfParam = ???
>   # here I want to access the name of the variable
>   # which was given as parameter to the function
>   print nameOfParam, param
>   return
> 
> if __name__ == __main__:
> 
>   a = 1
>   f(a)
> 
>   b = 'abcd'
>   f(a)
> 
> ----- -----
> 
> The output should be:
> 
> 'a' 1
> 'b' 'abcd'
> 
> ----- -----
> 
> I tried to look at globals() and locals(), gave a look to the frames
> (sys._getframe(0) and sys._getframe(1),
> but did not see a possibility to access the information a want
> 
> How can this be done?

Not in any efficient way. A debugger can do it, and you can do it in the same 
way as a debugger, checking stack frames and the source code. But if it's 
debugging that you're after then use a debugger  --  that's what they're for.

Otherwise, just change the way that you invoke the routine.

For example,

   >>> def f( **kwa ):
   ...     print( kwa )
   ...
   >>> a = 1234
   >>> b = "huh"
   >>> f( a = a, b = b )
   {'a': 1234, 'b': 'huh'}
   >>> _


Cheers & hth.,

- Alf



More information about the Python-list mailing list