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]
在 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]