【发布时间】:2011-08-19 22:21:29
【问题描述】:
我目前正在用 python 制作一个聊天应用程序。 它是这样工作的: 1.服务器正常工作 2.客户输入他们的ID和密码 3.登录信息由服务器检查 4.他们被服务器分配一个随机数 5. 他们现在可以向服务器发送和接收消息
我在接收 ID 和通行证时遇到问题(请不要怪我使用 global 和 exec)
def recv_server():
global number
global s #the tcp socket
exec("global sock"+number) #creating a specific sock for each connection
exec("sock"+number+","+"sockname"+number+" = s.accept()")
exec("logindata=sock"+number+".recv(65535)")
logindata=logindata.decode()
...
数字为 1 的代码将是:
global sock1
sock1, sockname1 = s.accept()
logindata=sock1.recv(65535)
我在 windows 上使用 python 3.2 并且在运行脚本时,登录数据通常会有一个值,现在它是未分配的
File 'abc' line 23, in recv_server
logindata=logindata.decode()
UnboundLocalError: local variable 'logindata' referenced before assigment
在我的 Linux 计算机(mint 11)上,与 Dropbox 共享文件并使用 python (2.7) 打开不会给我任何错误
现在我想问是否有人知道这个问题的原因是什么?
【问题讨论】:
-
用“请不要怪我使用 global 和 exec”来寻求帮助就像在建筑项目中寻求帮助并说“请不要怪我使用土豆泥而不是干墙”。