关注我之前的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
我做错了什么?
答案 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')
变量W
,V
和A
不会在USBprocess
函数中初始化,因此return
将失败。
通过在if
语句之前初始化所有局部变量来修复它。