這是我第一次使用matplotlib和numpy。Python:numpy和matplotlib異常
這裏去的問題:
如果我轉到蟒蛇CLI,預期代碼工作正常。下面是代碼
>>> from numpy import *
>>> y = array([1,2])
>>> y = append(y, y[len(y) - 1]+1)
>>> y
array([1, 2, 3])
但是,如果我在一個腳本matplotlib使用它,我得到這個錯誤。
line 26, in onkeypress
y = append(y, y[len(y) - 1]+1)
UnboundLocalError: local variable 'y' referenced before assignment
這裏是我的腳本:
from matplotlib.pyplot import figure, show
from numpy import *
figzoom = figure()
axzoom = figzoom.add_subplot(111, xlim=(0,10), ylim=(0, 10),autoscale_on=True)
x = array([1, 2 ])
y = array([1, 10 ])
def onkeypress(event):
if event.key == "up":
y = append(y, y[len(y) - 1]+1)
x = append(x, x[len(x) - 1] )
axzoom.plot(x,y)
我試過 「追加」 荷蘭國際集團到不同的陣列,說Y1,然後Y = y1.copy()。但我仍然得到同樣的錯誤。我必須在這裏錯過一些微不足道的東西!
因此,通過相同的邏輯「axzoom」也應該是全球性的......禮儀? – 2010-10-02 03:51:14
它不必聲明爲全局。由於本地範圍沒有axzoom變量,因此使用全局值。分配給變量是不同的,因爲它在本地範圍內創建了一個新變量。 – 2010-10-02 06:51:16
@ future.open - 我的答案中的關鍵詞是「當你分配」和「如果你不分配」。由於axzoom沒有被分配一個值,但它的值正在被使用,它仍然指向全局變量。 – Rajan 2010-10-03 22:16:00