def get_names_dict(*args): id2name = dict((id(val), key) for key, val in inspect.stack()[1][0].f_locals.items()) return dict((id2name[id(a)], a) for a in args) # >>> a = 1 # >>> b = 'b' # >>> print get_names_dict(a, b) # {'a': 1, 'b': 'b'} def foo(a, b, c, d, e): #something interesting here def main(argv): a, b, c, d, e = get_some_interesting_values() print 'calling foo with ', get_names_dict(a, b, c, d, e) foo(a, b, c, d, e)