相关疑难解决方法(0)

你能列出一个函数收到的关键字参数吗?

我有一个字典,我需要传递键/值作为关键字参数..例如..

d_args = {'kw1': 'value1', 'kw2': 'value2'}
example(**d_args)
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但是如果d_args dict中的值没有被example函数接受,它显然会死掉..比如说,如果示例函数定义为def example(kw2):

这是一个问题,因为我不控制生成d_argsexample函数..它们都来自外部模块,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,但我想知道:有没有办法以编程方式列出特定函数所需的关键字参数?

python arguments introspection

98
推荐指数
4
解决办法
5万
查看次数

确定lambda中的参数数量

我想知道是否有办法确定(给定一个包含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)

python lambda

40
推荐指数
3
解决办法
5199
查看次数

标签 统计

python ×2

arguments ×1

introspection ×1

lambda ×1