2017-04-05 64 views
2

在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’」的錯誤。

預先感謝您。

回答

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] 
+0

謝謝你了。 Python,總是在角落裏發現新的東西。 – JayJay123