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

Python: Trailing Comma in Object Name

在 Windows 上使用 Python 2.7。

查看 Python 代码时发现此处:https://gist.github.com/chappers/bd910bfb0ed73c509802

我找到了以下行:self.line, = ax.plot(range(10))

指定对象名称中的尾随逗号是什么意思?我在 Internet 上调查并找到了对元组、列表、字典的引用,但没有找到 class-对象名称。 'pack' 是否使用来自 "range" 的数据调用 "ax.plot"?还是它会导致创建底层 class 的方法列表?

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

当我删除尾随逗号时,程序失败并出现错误 "'list' object has no attribute 'get_data'".

提前致谢。

是的,这叫做拆包

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

等同于取某物的第一个元素ax.plot(range(10)) returns:

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

self.line, 也意味着 ax.plot(range(10)) returns 一个由单个元素组成的列表或元组。如果这不是真的,则应使用稍微其他的语法:

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]