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

Posted

技术标签:

【中文标题】Pylint 警告:可能不平衡的元组与序列解包【英文标题】:Pylint warning: Possible unbalanced tuple unpacking with sequence 【发布时间】:2015-03-14 19:57:05 【问题描述】:

我有一段 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 似乎总是会返回四个结果。错误是什么意思,为什么?

【问题讨论】:

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

如果警告是错误的,可以通过将# pylint: disable=unbalanced-tuple-unpacking 附加到该行来禁用它。

【讨论】:

在带有警告的行之前添加它对我有用,而不是之后。

以上是关于Pylint 警告:可能不平衡的元组与序列解包的主要内容,如果未能解决你的问题,请参考以下文章

为啥解包元组会导致语法错误?

Python 模拟 call_args_list 解包元组以对参数进行断言

Java中的元组与类

scala 将元组解包到案例类参数和附加的 zip 两个序列中

python容器--元组

python容器--元组