UnboundLocalError:赋值前引用的局部变量'W'

时间:2013-06-14 10:45:36

标签: python linux

关注我之前的question。我被建议创建一个单独的python库然后导入它。

Stackoverflow上阅读了更多内容之后,我意识到最好的方法是write methods,我已经走上了这条道路。

def USB(port):
        activateme = serial.Serial(port,115200)
        #print "starting to monitor"
        for line in activateme:
                #print line
                return line

def USBprocess(line):
        if line.startswith( '#d'):
                fields = line.split(',')
                if len(fields) > 5:
                        W = fields[1]
                        V = fields[2]
                        A = fields[3]
                print "monitoring"
        return W,V,A

op = USB(port)
w,v,a = USBprocess(op)

我收到错误:

UnboundLocalError: local variable 'W' referenced before assignment

我做错了什么?

2 个答案:

答案 0 :(得分:6)

如果第一个W, V, A条件不是if,您应该在函数开头提供True的值。也许这样的事情(改变适合你的问题的默认值):

def USBprocess(line):
    W, V, A = '0', '0', '0'
    if line.startswith('#d'):
        # etc.

答案 1 :(得分:0)

如果此表达式不成立:

 line.startswith( '#d')

变量WVA不会在USBprocess函数中初始化,因此return将失败。

通过在if语句之前初始化所有局部变量来修复它。