对于我在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警告是不良样式的标志,所以我更多地寻求避免这种警告的另一种编码方式。
我还有哪些其他选择?
答案 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))