Yes, It's actually quite easy to implement getlocals = lambda fn: fn.func_code.co_varnames[:] getargs = lambda fn: getlocals()[:fn.func_code.co_argcount]
Of course, this doesn't take into account *args and **kwargs. To figure out if a function have args and kwargs, do a binary and (&) between func_code.co_flags and either 4 (*args) or 8 (**kwargs). The indices of the two local variables are co_argcount and co_argcount+1 (so the entire expression for *args would just be if fn.func_code.co_flags&4: fn.func_code.co_varnames[argcount]) -- http://mail.python.org/mailman/listinfo/python-list