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

EdG*_*EdG 9 python coding-style pylint optional-arguments

对于我在 Python 中的代码,我想使用特定参数调用许多函数。但是,对于某些函数,该参数没有任何作用。不过,出于兼容性原因,我想添加这个论点。例如,考虑以下最小工作示例:

def my_function(unused=False):
    """ Function with unused argument. """
    return True
Run Code Online (Sandbox Code Playgroud)

显然,这个参数unused没有被使用,所以 Pylint 抛出了一个警告:

W0613: Unused argument 'redundant' (unused-argument)
Run Code Online (Sandbox Code Playgroud)

我的观点是,我不希望删除的说法unused,因为函数my_function会以类似的方式被称为用于许多其它功能unused 使用

我的问题:如何在不删除可选参数的情况下避免来自 Pylint 的警告?

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

def my_function(unused=False):
    """ Function with unused argument. """
    if unused:
        dummy = 10
        del dummy
    return True
Run Code Online (Sandbox Code Playgroud)

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

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

def my_function(unused=False):
    """ Function with unused argument. """
    # pylint: disable=unused-argument
    return True
Run Code Online (Sandbox Code Playgroud)

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

我还有什么其他选择?

sin*_*roc 10

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

[MESSAGES CONTROL]
enable=useless-suppression
Run Code Online (Sandbox Code Playgroud)

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

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

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

def my_function(used, _unused=False):
    """ Function with unused argument. """
    return used
Run Code Online (Sandbox Code Playgroud)

另一种常用的模式如下:

def my_function(used, unused_a, unused_b=False):
    """ Function with unused argument. """
    _ = (unused_a, unused_b,)
    return used
Run Code Online (Sandbox Code Playgroud)

  • @dhochee显然,在关键字参数前添加下划线会更改该关键字参数的名称,因此在参数实际上*需要*作为关键字参数的情况下不太可能成为可用的解决方案。 (2认同)