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"