在分配错误之前引用

时间:2018-03-13 16:36:35

标签: python python-3.x

我收到了错误"本地变量' Xold'在转让之前引用"。我不明白为什么我收到错误,因为在我尝试使用之前我已经分配了相关变量。

def calculator (newX,newY):
    global count
    if  count==0:
        Xold = newX
        Yold = newY
        count+=1
        print(Xold,Yold) #prints 97.9 which is correct. 
    else:
        Xdistance = newX - Xold
        Ydistance = newY - Yold
        print(Xdistance,Ydistance)
        parser()

提一下,count在代码开头设置为0。

1 个答案:

答案 0 :(得分:2)

您的else后卫正在先执行,因此未分配Xold。即使Xold出现在上面的一行中,它也在一个未被执行的块中。

执行的步骤是:

calculator(x, y)
  if count == 0 # False
  else:
  Xdistance = newX - Xold # Xold is not defined yet

您需要在if子句之外使用合理变量来定义它。

如果你想要聪明,你可以做这样的事情

count = 0

def calculator (newX,newY):
    global count
    if  count==0:
        calculator.Xold = newX
        calculator.Yold = newY
    count+=1
    print(calculator.Xold,calculator.Yold) #prints 97.9 which is correct. 
else:
    ...