我的確從來沒關心過plot
函式的返回值是什麼,所以當我看到這個截圖的時候,第一反應是以為返回值有多個,**只取了第乙個,剩餘的被忽略了。這種情況一般都是用_
做佔位符,來忽略不關心的值。
佔位符_
也可以省略嗎?我迅速開啟 pycharm 驗證了一把,事實證明,_
不可以省略,我的想法是錯了。
為了查明原因,我去查了 matplotlib 的原始碼,發現plot
函式返回的是乙個列表,原始碼如下:
def
plot
(self,
*args,
**kwargs)
: scalex = kwargs.pop(
'scalex'
,true
) scaley = kwargs.pop(
'scaley'
,true)if
not self._hold:
self.cla(
) lines =
kwargs = cbook.normalize_kwargs(kwargs, _alias_map)
for line in self._get_lines(
*args,
**kwargs)
: self.add_line(line)
self.autoscale_view(scalex=scalex, scaley=scaley)
return lines
我這才反應過來,這是列表拆包啊。變數後面的逗號,是因為返回的列表中只有乙個元素,所以拆包的時候變數後面要加個逗號,標明這是拆包,不是賦值。
**中,我們用的比較多的是元組拆包,各種書裡也多是講元組拆包,所以忽略了列表也是可以拆包的。看下面的例子:
x, y =[1
,2]print
(x, y)
輸出:
1 2
不僅是元組和列表,所有可迭代物件都可以拆包。我們可以自定義乙個可迭代物件(只需要實現其協議即__iter__
方法即可),來驗證一下,**如下:
class
testclass
:def
__init__
(self)
: self._list =
range(3
)def
__iter__
(self)
:for i in self._list:
yield i
x, y, z = testclass(
)print
(x, y, z)
輸出:
0 1 2
Python 列表也能拆包?
這是常用的 matplotlib 庫,只是一般我們呼叫plot方法繪圖時,不會去關心它的返回值。然而plt1,plt.plot 這種寫法是什麼意思?被賦值的變數和賦值符號之間多了個逗號。我的確從來沒關心過plot函式的返回值是什麼,所以當我看到這個截圖的時候,第一反應是以為返回值有多個,只取了第乙個...
Python 列表也能拆包?
前幾天,看書時遇到了這樣乙個問題,看下圖 這是常用的 matplotlib 庫,只是一般我們呼叫 plot 方法繪圖時,不會去關心它的返回值。然而 plt1,plt.plot 這種寫法是什麼意思?被賦值的變數和賦值符號之間多了個逗號。我的確從來沒關心過 plot 函式的返回值是什麼,所以當我看到這個...
python 遍歷迴圈 拆包
for迴圈最經常的使用的方式就是遍歷 所有容器型別 獲取所有容器型別裡面的元素,就是遍歷 字串,列表,元組,字典,集合 字串 str abc for value in str print value 列表 my list 蘋果 士多啤梨 for value in my list print valu...