Python:对象名称中的尾随逗号

问题描述:

在Windows上使用Python 2.7。Python:对象名称中的尾随逗号

在审查发现这里的Python代码:https://gist.github.com/chappers/bd910bfb0ed73c509802

我发现下面一行:self.line, = ax.plot(range(10))

什么是对象名称指定这个结尾的逗号?我在互联网上进行了调查,发现了对元组,列表,字典的引用,但没有引用类对象名称。它是否将来自“范围”的数据打包为“ax.plot”?或者它是否会导致创建基础类的方法列表?

后来的程序调用对象像这样,x, y = self.line.get_data()self.line.set_ydata(y - 0.2 * x)

当我删除后面的逗号,该计划失败,“‘清单’对象有没有属性‘GET_DATA’”的错误。

预先感谢您。

是的,这叫做拆包

self.line, = ax.plot(range(10)) 

相同服用的东西的第一个元素ax.plot(range(10))回报:

self.line = ax.plot(range(10))[0] 

self.line,也意味着ax.plot(range(10))返回一个列表或者由单个元素的元组。如果这是不正确的,稍微其他语法应采用:

self.line, second = ax.plot(range(10)) # if returns a pair 
self.line, second, third = ax.plot(range(10)) # if returns a triplet 
... 
self.line, *others = ax.plot(range(10)) # if returns a list of unknown length 
             # (supported I believe in python 3.5+) 

更复杂的拆包也是可能的:

a, (b, c), d = [1, (2, 3), 4] 
+0

谢谢你了。 Python,总是在角落里发现新的东西。 – JayJay123