说我没有申报,尽管我显然申报了

2024-05-08 02:03:04 发布

您现在位置:Python中文网/ 问答频道 /正文

该错误被称为:unbundLocalError:赋值前引用的局部变量“p”。 我想要它,这样我就可以用K和L改变笔的宽度,但它不允许我。你能帮我吗

from gturtle import*
keyK = 75
keyL = 76
P = 10

def colorKeys(key):
if key == keyK:
    P = P - 2
elif key == keyL:
    P = P + 2

makeTurtle(keyPressed = colorKeys)
hideTurtle()

while True:
    setPenWidth(P)

Tags: keyfromimportif宽度def错误赋值
3条回答

函数colorKeys(key)中没有局部变量p。如果没有“Global”关键字,则无法在函数中更改全局变量(不建议使用“Global”关键字)

要解决此问题,可以返回要添加到p的值:

def colorKeys(key):
    if key == keyK:
        return -2
    elif key == keyL:
        return 2
    return 0

P += colorKeys(key)

如果确实希望在函数中使用全局变量,可以执行以下操作:

def colorKeys(key):
  global P
  if key == keyK:
      P = P - 2
  elif key == keyL:
      P = P + 2

但总的来说,这是个坏主意

在函数外部创建的变量可以在函数中引用而不会出错,但不能修改。您必须将P设置为全局,在colorKeys中定义它,或者像处理colorKeys一样将其传递给colorKeys

相关问题 更多 >