可以不使用*魔法来格式化列表吗?

6 投票
3 回答
1491 浏览
提问于 2025-04-18 06:56

我写了一些Python代码,虽然代码能正常运行,但Pylint对星号不太满意。它一直在告诉我:

Used * or ** magic (star-args)

有没有办法不使用星号来写我的代码呢?一些信息:我正在使用lxml库;self.xml是一个对象化的XML文件。

@property
def version_string(self):
    '''Return the version as a string.'''
    try:
        version_format = self.xml.version.get("format")
    except AttributeError:
        return None
    version_values = (v.text for v in self.xml.version.v)
    return version_format.format(*version_values)

3 个回答

4

star-args (W0142) 在pylint中已经不再存在了(至少从1.4.3版本开始)。看起来这个功能是最近才被删除的。

7

如果你不喜欢这个pylint的警告,可以把它关掉。这个警告最开始是为了提醒大家,代码里有太多的

def some_function(*args, **kwargs):
    pass

会让代码变得不容易读懂和维护。

11

这个“splat”操作符没有问题。我们不知道version_format这个函数具体是干什么的,所以不能确定你是否可以传入一个可迭代的对象,或者直接对这个函数进行迭代。不过老实说,没必要这样做。

撰写回答