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

时间:2019-12-02 09:37:10

标签: python coding-style pylint optional-arguments

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

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

很明显,没有使用参数unused,因此Pylint会发出警告:

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

我的意思是我不想删除参数unused,因为函数my_function的调用方式与unused 的许多其他函数类似使用

  

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

选项1 :我可以想到两个选项,但是这些选项令我不满意。一种选择是添加一些无用的代码,例如使用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警告是不良样式的标志,所以我更多地寻求避免这种警告的另一种编码方式。

我还有哪些其他选择?

2 个答案:

答案 0 :(得分:1)

我不认为禁用某些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

答案 1 :(得分:0)

可以通过与**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))