Skip to main content
 首页 » 编程设计

Python:numpy 和 matplotlib 异常

2025年05月04日15shangdawei

这是我第一次使用 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。