处理变量未分配

时间:2018-04-19 20:14:04

标签: python python-3.x oop variables processing

x = 0
y = 0
tx = 0
ty = 0

def setup():
    size(600, 600)
    noStroke()

def draw():
    background(0)
    textAlign(LEFT,TOP)
    # text("Hello World",x,y)
    tx=mouseX
    ty=mouseY
    f=0.01
    #The error: "UnboundLocalError: local variable 'x' referenced before assignment"
    x=lerp(x,tx,f)
    y=lerp(y,ty,f)

这是处理python代码。 我使用的是处理3.3.6和Python模式3037的Mac OSX High Sierra 10.13.1。

此代码提供" UnboundLocalError:局部变量' x'在转让前引用"在代码中注释行之后的行。

我是python的新手,这似乎是谷歌所说的。

编辑: 另外,我如何在类方法中引用全局变量和实例变量?

2 个答案:

答案 0 :(得分:2)

要从函数中修改全局变量,需要使用global语句,如下所示:

def draw():
    global x, y, tx, ty
    background(0)
    ...

如果您使用的是类,那么您的代码将如下所示:

class Drawer(object):
    def __init__(self):
        self.x = 0
        self.y = 0
        self.tx = 0
        self.ty = 0

    def setup(self):
        size(600, 600)
        noStroke()

    def draw(self):
        background(0)
        textAlign(LEFT, TOP)
        # text("Hello World",x,y)
        self.tx = mouseX
        self.ty = mouseY
        f = 0.01
        self.x = lerp(self.x, self.tx, f)
        self.y = lerp(self.y, self.ty, f)

d = Drawer()
d.setup()
d.draw()

答案 1 :(得分:0)

应该工作吗?我没有进入python,这是来自其他人

x = 0
y = 0
tx = 0
ty = 0

def setup():
    size(600, 600)
    noStroke()

def draw():
    global x, y, tx, ty
    background(0)
    textAlign(LEFT,TOP)
    # text("Hello World",x,y)
    tx=mouseX
    ty=mouseY
    f=0.01
    x=lerp(x,tx,f)
    y=lerp(y,ty,f)