how can I get the name of a variable (or other object)?

Cameron Laird claird at
Thu Jul 22 16:05:20 CEST 2004

In article <10fvcrk7hmjob60 at>,
John Roth <newsgroups at> wrote:
>"Josef Dalcolmo" <dalcolmo at> wrote in message
>news:20040722142305.0000373a at titan...
>> If I have a Python variable like
>> var = 33
>> can I get the name 'var' as a string?
>> Obviously this does not make much sense when using a single variable, but
>if I want to print the variable together with it's name, for a list of
>variables, then it could make sense:
>> def printvariables(varlist):
>> ....for var in varlist:
>> ........print var.__name__, var
>> of course the attribute __name__ I just made up, and if this would always
>return 'var' it would not make any sense either.
>> I am not sure if such a thing is at all possible in Python.
>As a general rule, the answer is no. The basic reason is
>that there is a many-to-one relationship between the
>names to which an object is bound, and the object itself.
>In your example, the integer '33' could be bound to a
>large number of different identifiers in different objects.
>Python doesn't maintain that kind of a crossreference,
>and even if it did, you'd still need to figure out the
>context you were asking about.
>If you know the context, you might consider
>building an inverse dictionary so you can use
>it to look up the object and find the name(s)
>that it's bound to in that context. Timing is
>important here!
While I, too, suspect Mr. Dalcolmo will eventually find
contentment in some sort of use of dictionaries that
address his *real* issue--which we don't yet know, of
course--I wonder if 
  print "The globals are %s, and locals are %s." % (globals(), locals())
will end up pertinent to his needs.

More information about the Python-list mailing list