On Mar 18, 5:40 am, Jarek Zgoda <[EMAIL PROTECTED]> wrote: > Say, I have a function defined as: > > def fun(arg_one, arg_two='x', arg_three=None): > pass > > Is there any way to get actual arguments that will be effectively used > when I call this function in various ways, like: > > fun(5) => [5, 'x', None] > fun(5, arg_three=['a', 'b']) => [5, 'x', ['a', 'b']] > fun(5, 'something') => [5, 'something', None] > > (et caetera, using all possible mixes of positional, keyword and default > arguments) > > I'd like to wrap function definition with a decorator that intercepts > not only passed arguments, but also defaults that will be actually used > in execution. > > If this sounds not feasible (or is simply impossible), I'll happily > throw this idea and look for another one. ;)
It evaluates to a substantial problem. The combinations include things that Python disallows, such as double-spec. of keywords and spec'n of keys w/out a dictionary arg; as well as double-spec'ing of inspection. How do you want to access the parameters? What is the least redundant way? P.S. Does there exist a possible authority who doesn't want me to post this? How about an index of value and list/tuple of name? > def fun(arg_one, arg_two='x', arg_three=None): > fun(5) => [5, 'x', None] get_args( fun, 5 )-> names= [ 'arg_one', 'arg_two', 'arg_three' ] vals= [ 5, 'x', None ] > fun(5, arg_three=['a', 'b']) => [5, 'x', ['a', 'b']] get_args( fun, 5, arg_three=['a', 'b'] ) names= [ 'arg_one', 'arg_two', 'arg_three' ] vals= [ 5, 'x', ['a', 'b'] ] > fun(5, 'something') => [5, 'something', None] get_args( fun, 5, 'something' )-> names= [ 'arg_one', 'arg_two', 'arg_three' ] vals= [ 5, 'something', None ] -- http://mail.python.org/mailman/listinfo/python-list