Python:兼容性需要未使用的参数。如何避免 Pylint 抱怨它

Python: unused argument needed for compatibility. How to avoid Pylint complaining about it

对于我在 Python 中的代码,我想调用许多带有特定参数的函数。但是,对于某些函数,该参数不执行任何操作。尽管如此,出于兼容性原因,我还是想添加该参数。例如,考虑以下最小工作示例:

def my_function(unused=False):
    """ Function with unused argument. """
    return True

显然,没有使用参数 unused,所以 Pylint 抛出警告:

W0613: Unused argument 'redundant' (unused-argument)

我的观点是我不想删除参数 unused,因为函数 my_function 将以与 unused [的许多其他函数类似的方式被调用 被使用

My question: How can I avoid the warning from Pylint without removing the optional argument?

方案一:我可以想到两个方案,但是这些方案都不能让我满意。一种选择是添加一些无用的代码,例如使用 unused,例如

def my_function(unused=False):
    """ Function with unused argument. """
    if unused:
        dummy = 10
        del dummy
    return True

这感觉是在浪费资源,而且只会使代码混乱。

选项2:第二个选项是抑制警告,例如:

def my_function(unused=False):
    """ Function with unused argument. """
    # pylint: disable=unused-argument
    return True

我也不太喜欢这个选项,因为通常 Pylint 警告是不良风格的标志,所以我更希望寻找一种不同的编码方式来避免这个警告。

我还有哪些其他选择?

我不认为禁用某些 pylint 警告是糟糕的风格,只要它是出于明确的意图并尽可能具体地仔细完成。为此,激活 useless-suppression 检查很重要。当它处于活动状态时,pylint 会在某些消息无缘无故在本地被禁用时向您发出警告。将此添加到您的 .pylintrc:

[MESSAGES CONTROL]
enable=useless-suppression

例如,我建议禁用问题的确切发生,如下例所示:

def my_function(
        used,
        unused=False,  # pylint: disable=unused-argument
):
    """ Function with unused argument. """
    return used

添加前导下划线还应防止 pylint 触发:

def my_function(used, _unused=False):
    """ Function with unused argument. """
    return used

另一种常用的模式如下:

def my_function(used, unused_a, unused_b=False):
    """ Function with unused argument. """
    _ = (unused_a, unused_b,)
    return used

可以通过 **kwargs 来解决问题。例如:

def _function_a(one, two=2):
    return one + two

def _function_b(one, **kwargs):
    return one + kwargs['two']

def _function_c(one, **_kwargs):
    return one

def _main():
    for _function in [_function_a, _function_b, _function_c]:
        print(_function.__name__, _function(1, two=4))