Any given Python object may be bound to multiple names or none at all,
so trying to find the symbol(s) which reference an object is sort of
quixotic.

In fact, you've got None referenced by both "my" and "c" in this
example, and in a more complicated program None will be referenced by
dozens symbols because it's unique [e.g. (a == None, b == None)
necessitates (a is b) == True]

You could try using "is" to match it with something in the namespace,
though.  This might do what you want.

def names(thing):
    return [name for name,ref in globals().iteritems() if ref is thing]

a =  1; b = 2; c = None

mylist = [a,b,c]
for my in mylist:
    if my is None:
        print 'you have a problem with %s' % names(my)


-------------

Although it would be much simpler to rewrite your code like this:

a = 1; b = 2; c = None

mylist = ['a','b','c']
for my_name in mylist:
    my = eval(my_name)
    if my is None:
        print 'you have a problem with %s' % my_name

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to