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

时间:2017-04-05 05:33:08

标签: python python-2.7 comma trailing

在Windows上使用Python 2.7。

在查看此处的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 )

当我删除尾随逗号时,程序失败,错误为"' list'对象没有属性' get_data'"。

提前谢谢。

1 个答案:

答案 0 :(得分:4)

是的,这称为解包

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]