UnboundLocalError:在assignmen之前引用了局部变量“W”

2024-04-25 08:42:56 发布

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

在我之前的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)

我得到了一个错误:

^{pr2}$

我做错什么了?在


Tags: 方法fieldsreturnifportdeflinestackoverflow
2条回答

您应该在函数的开头为W, V, A提供值,以防第一个if条件不是{}。可能是这样(根据您的问题更改默认值):

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

如果此表达式不正确:

 line.startswith( '#d')

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

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

相关问题 更多 >