1

继我之前的问题之后。有人建议我制作一个单独的 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

我做错了什么?

4

2 回答 2

6

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

def USBprocess(line):
    W, V, A = '0', '0', '0'
    if line.startswith('#d'):
        # etc.
于 2013-06-14T10:47:20.347 回答
0

如果这个表达式不正确:

 line.startswith( '#d')

variables WV并且A不会在您的USBprocess函数中初始化,因此return会失败。

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

于 2013-06-14T10:49:11.773 回答