Ron wrote:
def getvinfo(vars, v): """ vars is locals() v is [varable] Use an one item list to pass single varables by reference. """ for n in vars.keys(): if vars[n] is v[0]: return n, v[0], type(v[0])
a = 101 b = 2.3 c = True
print getvinfo(locals(), [a]) print getvinfo(locals(), [b]) print getvinfo(locals(), [c])
>>> ('a', 101, <type 'int'>) ('b', 2.2999999999999998, <type 'float'>) ('c', True, <type 'bool'>)
Are you sure that you really need that single-element list?
>>> def getvinfo2(vars, v): ... for n in vars.keys(): ... if vars[n] is v: ... return n, v, type(v) ... >>> getvinfo2(locals(), a) ('a', 1, <type 'int'>) >>> getvinfo2(locals(), b) ('b', 2.2999999999999998, <type 'float'>) >>>
Now, making that second parameter a list would enable you to do this for multiple local names with a single call, but getvinfo() doesn't try to do that...
Don't forget, in Python, all names are references. You only have to be careful when you start re-binding names...
Jeff Shannon
-- http://mail.python.org/mailman/listinfo/python-list