python - 确定 lambda 中的参数数量

标签 python 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
    """

所以我可以做类似的事情

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)

最佳答案

Lambda 和其他函数一样。参数计数存储在 func.__code__.co_argcount 中。

>>> foo = lambda x, y=2: x+y
>>> foo.__code__.co_argcount
2
>>> foo = lambda x, y=2, z=3: x+y+z
>>> foo.__code__.co_argcount
3

关于python - 确定 lambda 中的参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10865325/

相关文章:

c# - 使用 lambdas 选择子对象集合

python - 将字符串中的十六进制字符附加到字符串

python - 如何使用不同版本的 Python 运行 Python Nose 测试

python:命名具有两个单词名称的模块

python - 查找一个数组中的哪些元素与另一个数组中的任何元素接近的最有效方法是什么?

c# - Linq 语句 : Order by

python - 将数据框转换为列表列表

c# - LambdaExpression 如何在运行时通过动态解析为 Expression<Func<T, returnT>> ?

C# - 在 LINQ sum 方法中计算值时应该无法访问代码

java - 回调 Lambda 表达式 + JavaFX