A
Amir
How do you filter keyword arguments before passing them to a function?
For example:
def f(x=1): return x
def g(a, **kwargs): print a, f(**kwargs)
In [5]: g(1, x=3)
1 3
In [6]: g(1, x=3, y=4)
TypeError: f() got an unexpected keyword argument 'y'
Is there a way to do something like:
def g(a, **kwargs): print a, f(filter_rules(f, **kwargs))
so only {'x': 3} is passed to f?
I was hoping for a pythonic way of doing what in Mathematica is done
by FilterRules:
http://reference.wolfram.com/mathematica/ref/FilterRules.html
For example:
def f(x=1): return x
def g(a, **kwargs): print a, f(**kwargs)
In [5]: g(1, x=3)
1 3
In [6]: g(1, x=3, y=4)
TypeError: f() got an unexpected keyword argument 'y'
Is there a way to do something like:
def g(a, **kwargs): print a, f(filter_rules(f, **kwargs))
so only {'x': 3} is passed to f?
I was hoping for a pythonic way of doing what in Mathematica is done
by FilterRules:
http://reference.wolfram.com/mathematica/ref/FilterRules.html