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))
对于我在 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))