[英]Python Global variable modification does not work
我正在嘗試更新一個引用套接字輸入流的全局變量AUTHEN 。
在run()
方法中,我試圖修改AUTHEN的值。 但是,當我實際運行程序時,它永遠不會改變。 我確定我的服務器確實發送了除“某事”之外的其他消息
import threading
import sys
import time
import socket
import ssl
AUTHEN ="Something"
class timer(threading.Thread):
def __init__(self):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.ssl_sock = ssl.wrap_socket(self.sock, ssl_version=ssl.PROTOCOL_SSLv23)
self.ssl_sock.connect(('localhost',9991))
self.isrun = True
threading.Thread.__init__(self)
def send(self,str):
self.ssl_sock.send(str + "\n")
def run(self):
global AUTHEN
while self.isrun:
receive = self.ssl_sock.recv(1024)
AUTHEN = receive
print("recv ->" +AUTHEN)
self.sock.close()
self.ssl_sock.close()
def close(self):
self.isrun == False
def authentication(self,username,password):
global AUTHEN
print "Verifing identity"
self.ssl_sock.send("U&P"+"sprt"+username+"sprt"+password+'\n')
while (True):
print AUTHEN
if(AUTHEN == str("OK\r\n")):
return AUTHEN
else:
print "Please Try again"
break
def main():
client = timer()
client.start()
#LOG IN
while(True):
loginMessage = str(raw_input("Please enter username and password as following format: \n username%password \n"))
username = loginMessage.split("%")[0]
password = loginMessage.split("%")[1]
Result = client.authentication(username,password)
if(Result == str("OK\r\n")):
print "LOG IN SUCCESSFULLY"
print "Welcome:\n","Command to be used:\n","-a filename\n" "-c number\n", "-f filename\n","-h hostname:port\n","-n name\n","-u certificate\n","-v filename certificate\n","otherwise input will be treated as normal message"
break
if __name__=='__main__':
main()
謝謝。
你需要調用main()
你需要Start()你的線程來初始化Run(),它將設置你的全局變量。 你的thread.start()在你的main()def中。
import threading
class ThreadClass(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
global a
a = 'Test'
def main(self):
thread = ThreadClass()
thread.start()
a= 'funny'
print a
ThreadClass().main()
print a
>>>funny
>>>Test
嘗試從代碼中刪除兩個句子:
global AUTHEN;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.