这是我第一次使用 matplotlib 和 numpy。
问题来了:
如果我转到 python 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()。但我仍然遇到同样的错误。我一定在这里遗漏了一些微不足道的东西???!!!
最佳答案
当你在一个函数中赋值给一个变量时,python 会创建一个具有局部作用域的新变量,这个新变量也会隐藏全局变量。
因此,onkeypress 中的 x 和 y 是函数的局部值。因此,从 Python 的角度来看,它们是未初始化的,因此是错误的。
正如 GWW 指出的那样 - 将 x, y 声明为全局将解决问题。此外,如果您不为 x、y 分配任何新值,而仅使用它们以前存在的值,则这些值将引用全局 x、y。
关于Python:numpy 和 matplotlib 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3833717/