UnboundLocalError:分配前已引用局部变量“ W”

继我之前的问题。建议我制作一个单独的python库,然后将其导入。


在阅读了更多的内容之后Stackoverflow,我意识到最好的方法是编写方法,并且我已经走了这条路。


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

我做错了什么?


慕的地10843
浏览 223回答 2
2回答

汪汪一只猫

W, V, A如果第一个if条件不是,则应在函数开始时提供的值True。可能是这样的(更改适合您问题的默认值):def USBprocess(line):    W, V, A = '0', '0', '0'    if line.startswith('#d'):        # etc.

梦里花落0921

如果此表达式不正确: line.startswith( '#d')变量W,V并且A不会在您的USBprocess函数中初始化,因此return将失败。通过在if语句之前初始化所有局部变量来修复它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python