Skip to content Skip to sidebar Skip to footer

Can You Determine From A Function, Args, And Kwargs, How Variables Will Be Assigned?

I have some boiler plate logic that I want to wrap several functions that have the same optional keyword. Right now it looks like the code below. However, this only handles the c

Solution 1:

Yes, you want to use inspect.signature and work with the Signature object, which will allow you to .bind *args and **kwargs:

In [1]: import inspect

In [2]: args = 'a', 'b', 'c'

In [3]: kwargs = {}

In [4]: defg(x,y,opt_key = None):
   ...:   return something
   ...:
   ...: defh(z,opt_key = None):
   ...:   return something_else
   ...:

In [5]: g_signature = inspect.signature(g)

In [6]: g_signature.bind(*args, **kwargs)
Out[6]: <BoundArguments (x='a', y='b', opt_key='c')>

Note, this BoundArguments object acts as a mapping:

In [7]: bound_arguments = g_signature.bind(*args, **kwargs)

In [8]: bound_arguments.arguments['opt_key']
Out[8]: 'c'

Post a Comment for "Can You Determine From A Function, Args, And Kwargs, How Variables Will Be Assigned?"