Skip to content Skip to sidebar Skip to footer

Printing The Name Of A Variable

I am a programmer new to python trying to write a simple test1() function that uses arg (or *arg) to print out how it was called using the 'name' of the argument passed to it, not

Solution 1:

This is more than a little ugly, but it's one way to achieve what you're after:

import traceback
importrealphabet= ['a', 'b', 'c']

def test(arg):
    stack = traceback.extract_stack()
    arg_name = re.sub('test\((.*)\)', '\g<1>', stack[-2][-1])
    print arg_name

test(alphabet)
test('foo')

The result of which is

alphabet
'foo'

Solution 2:

I'm not quite sure, why you want this, anyway ...

If you want the name of argument available in a function, you have to pass the name of the argument to the function. Python is call by reference in all cases.

In your function, arg will always be named arg inside the function. Its outside variable name is not available inside the function.

def test1(arg):
    print"name of arg is %r" % arg

However python has variable keyword arguments and there lies a possible solution to your problem. Let me redefine test1():

deftest1(**kwargs):
   param_name = iter(kwargs).next()
   print"name of parameter is %s" % param_name

You can call this function with a keyword argument:

alphabet = ['a', 'b', 'c']
test1(alphabet=alphabet)

Note, however, that what get's printed is not the variable name from outside the function, but the name of the keyword.

Post a Comment for "Printing The Name Of A Variable"