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]
谢谢你了。 Python,总是在角落里发现新的东西。 – JayJay123