我有一个字典,我需要传递键/值作为关键字参数..例如..
d_args = {'kw1': 'value1', 'kw2': 'value2'}
example(**d_args)
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是如果d_args dict中的值没有被example函数接受,它显然会死掉..比如说,如果示例函数定义为def example(kw2):
这是一个问题,因为我不控制生成d_args或example函数..它们都来自外部模块,example只接受来自dict的一些关键字参数.
理想情况下我会这样做
parsed_kwargs = feedparser.parse(the_url)
valid_kwargs = get_valid_kwargs(parsed_kwargs, valid_for = PyRSS2Gen.RSS2)
PyRSS2Gen.RSS2(**valid_kwargs)
Run Code Online (Sandbox Code Playgroud)
我可能只是从有效的关键字参数列表中过滤掉dict,但我想知道:有没有办法以编程方式列出特定函数所需的关键字参数?
我想知道是否有办法确定(给定一个包含lambda的变量)它包含的lambda参数的数量.原因是,我希望根据参数的数量有条件地调用函数.
我正在寻找什么
def magic_lambda_parameter_counting_function(lambda_function):
"""Returns the number of parameters in lambda_function
Args:
lambda_function - A lambda of unknown number of parameters
"""
Run Code Online (Sandbox Code Playgroud)
所以我可以做点什么
def my_method(lambda_function):
# ...
# (say I have variables i and element)
parameter_count = magic_lambda_parameter_counting_function(lambda_function)
if parameter_count == 1:
lambda_function(i)
elif parameter_count == 2:
lambda_function(i, element)
Run Code Online (Sandbox Code Playgroud)