2017-11-18 94 views
2

這可能是一個基本問題,但是在下面的代碼中,line, =是什麼?在Python中解壓值

 
import numpy as np 
import matplotlib.pyplot as plt 

ax = plt.subplot(111) 

t = np.arange(0.0, 5.0, 0.01) 
s = np.cos(2*np.pi*t) 
line, = plt.plot(t, s, lw=2) 

plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5), 
      arrowprops=dict(facecolor='black', shrink=0.05), 
      ) 

plt.ylim(-2,2) 
plt.show()

我試圖用一個簡單的例子a, = 1這引發錯誤int對象不是可迭代,這a, = 1,作品。

那麼var, =呢?

+0

我很好奇,你從'打印得到什麼(行)''後行= plt.plot(T,S,LW = 2 )'。我無法測試atm,但我不知道'plot()返回了任何東西。 – roganjosh

+0

@roganjosh完全參考[添加文本](https://matplotlib.org/users/pyplot_tutorial.html#annotating-text) – bhansa

+0

@roganjosh它返回一個Line2D對象'Line2D(_line0)' – bhansa

回答

1

致電plt.plot(t, s, lw=2)返回tuple一個element。然後將其解壓縮到variableline

同樣的邏輯可以在這裏看到:

>>> a = tuple([1]) 
>>> a 
(1,) 
>>> b, = a 
>>> b 
1 
+0

哦!看起來像單元素的元組。 – bhansa

+0

@bhansa確實!我試圖表明,在我的回答中,可能並不清楚...... –