Pylint警告:可能存在与序列不平衡的元组解包。

17
我有一段Python代码:
def func1():                                                                                                                  
    a=set()
    b = ','.join(map(str, list(a)))
    return  b, []

def func2():
    d = 1
    e = 2
    return func1() + (d, e,)

def main():
    a,b,c,d = func2()

if __name__ == '__main__':
    main()

当我使用pylint(1.4.0)运行它时,我收到了警告:
W: 12, 4: Possible unbalanced tuple unpacking with sequence: left side has 4 label(s), right side has 3 value(s) (unbalanced-tuple-unpacking)

看起来func2总是会返回四个结果。这个错误是什么意思,为什么会出现呢?

10
它说可能(而W只是一个警告)。显然,内省不够深入,不能确定func1总是返回一个二元组,因此func2总是返回一个四元组。鉴于您知道这不是问题,您可以在有问题的行上添加# pylint:disable = unbalanced-tuple-unpacking - jonrsharpe
1
这听起来像是一个误报,应该在pylint的问题跟踪器(https://bitucket.org/logilab/pylint/issues)上报告。 - sthenault
2
@sthenault 'b'太少了 - bitbucket! - jonrsharpe
2个回答

21
如果警告是错误的话,可以在该行代码后加上# pylint: disable=unbalanced-tuple-unpacking来禁用它。

当我在警告行之前添加它而不是之后时,它对我起作用了。 - Ameer Taweel
Ameer,没错,“append”意味着将注释添加到行的右侧,但是正如你所说,如果将其添加到上一行,它也可以工作。 - Zev Averbach

0
当前版本的pylint(截至2023年11月23日为止的3.0.2版本)已经不再存在这个错误。
$ pylint test_pylint_unpacking.py
************* Module test_pylint_unpacking
test_pylint_unpacking.py:1:12: C0303: Trailing whitespace (trailing-whitespace)
test_pylint_unpacking.py:1:0: C0114: Missing module docstring (missing-module-docstring)
test_pylint_unpacking.py:1:0: C0116: Missing function or method docstring (missing-function-docstring)
test_pylint_unpacking.py:6:0: C0116: Missing function or method docstring (missing-function-docstring)
test_pylint_unpacking.py:11:0: C0116: Missing function or method docstring (missing-function-docstring)
test_pylint_unpacking.py:12:4: W0612: Unused variable 'a' (unused-variable)
test_pylint_unpacking.py:12:6: W0612: Unused variable 'b' (unused-variable)
test_pylint_unpacking.py:12:8: W0612: Unused variable 'c' (unused-variable)
test_pylint_unpacking.py:12:10: W0612: Unused variable 'd' (unused-variable)

------------------------------------------------------------------
Your code has been rated at 2.50/10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接