替代函数定义中的星号(*)

时间:2015-03-07 13:13:05

标签: python function python-3.x variadic-functions pylint

当我在函数调用中使用星号时,Pylint会抱怨

def f(*args):
    # Some code

f(1, 2, 3,)

pylint给出的输出:

pylint failed:
Used * or ** magic (star-args)

是否有在函数定义中使用*的替代方法,这会产生相同的结果?

我需要通过pylint验证代码,因为它是一个学校作业。我不认为这是一个合法的警告,但我必须这样做,因为pylint说。

1 个答案:

答案 0 :(得分:3)

Pylint 高度可配置,在涉及某些事情时可能相当麻烦。即使star-args (W0142) rule description显示它只是一个警告:

  

使用*或** magic 。在使用*args**kwargs调度函数或方法来调度参数时使用。这不会提高可读性,应谨慎使用。

只需禁用您确定使用*args的函数的警告是正确的事情,而不是尝试解决PyLint:

def f(*args):  # pylint: disable=star-args
    # Some code

您唯一的选择是接受将您视为序列的一个参数,然后传入元组或列表:

def f(arg):
    # Some code

f((1, 2, 3))

但我严重怀疑您使用# pylint disable=...评论会失败。