我使用的代码如下,它将从设备获取答复。该值将被比较,并且“状态”将相应地改变。但是,闭包函数“netcat”中的“状态”无法传递给“登录”功能。我试图将其设置为全局变量,但它不起作用,或者可能是我不知道正确的方式来声明它。无论终端实际显示“用户”状态如何,它最终总是显示“lala”。我应该如何解决这个问题?Python不能从函数中传递值
@cherrypy.expose
def login (self, **data):
passcode = data.get("passcode", None)
print "logging in using passcode %s"%passcode ,type(passcode)
import socket
import time
state="lala"
def netcat(content):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('10.0.0.27', 1001))
s.sendall(content)
time.sleep(0.5)
s.shutdown(socket.SHUT_WR)
while 1:
data = s.recv(1024)
if data == "":
break
print "Received:", repr(data)
data1= repr(data)
print data1
if "LU" in data1:
if not "00" in data1:
if "FE" in data1:
state="engineer"
else:
state="user"
else:
state="none"
else:
state="unknown"
print state
time.sleep(1)
return state #this will show the right value
print "Connection closed."
s.close()
netcat ("\x03LI%s\x0D"%passcode)
return state #this will always show "lala"
'return netcat(“\ x03LI%s \ x0D”%passcode)' –