【问题标题】:Python: Trailing Comma in Object NamePython:对象名称中的尾随逗号
【发布时间】:2017-08-30 13:26:36
【问题描述】:

在 Windows 上使用 Python 2.7。

查看此处找到的 Python 代码时:https://gist.github.com/chappers/bd910bfb0ed73c509802

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

对象名称后面的逗号是什么意思?我在 Internet 上进行了调查,发现对元组、列表、字典的引用,但不是对类对象名称的引用。它是否使用“范围”中的数据“打包”对“ax.plot”的调用?还是会导致创建底层类的方法列表?

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

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

提前谢谢你。

【问题讨论】:

    标签: python python-2.7 comma trailing


    【解决方案1】:

    是的,这叫做拆包

    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,总是有新的发现在拐角处。
    猜你喜欢
    • 2018-01-10
    • 2020-08-05
    • 1970-01-01
    • 2019-02-12
    • 2014-01-19
    • 2021-01-25
    • 2016-03-24
    • 2010-09-17
    相关资源
    最近更新 更多