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