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)