在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'"。
提前谢谢。
答案 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]