python socketserver为嘛改变不了全局变量

砍柴君 2014-05-13 08:29:21
我用socketserver写了一个udp的服务器;没接受到一个包就会调用handle这个函数,我在handle函数中修改了一个全局变量的值,但是这个当handle函数退出后 这个全局变量的值并没有改变,这是我写的一个简单的代码,差不多能表达基本的意思

aaaa=0
class TestServerHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = self.request[0]
sock = self.request[1]
global aaaa
print 'aaaa'
print aaaa
aaaa+= 1
print aaaa
print 'end'

当收到一个包后这个类会调用handle函数,输出结果为:
aaaa
0
1
end
但是再次收到一个包的时候 输出结果还是这样 就是说aaaa这个变量就没改变过 一直为0,有人知道怎么做吗 非常感谢
...全文
171 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jeky_zhang2013 2014-05-19
  • 打赏
  • 举报
回复
可能每次都是创建一个新的对象,保证运行中只有一个对象存在试下
ImN1 2014-05-13
  • 打赏
  • 举报
回复
引用 2 楼 snmr_com 的回复:
如果运行环境是windows,好象是改不了的,每次都读入初始值
呃,记错了,是win多进程的时候?
ImN1 2014-05-13
  • 打赏
  • 举报
回复
如果运行环境是windows,好象是改不了的,每次都读入初始值
panghuhu250 2014-05-13
  • 打赏
  • 举报
回复
你贴出来的代码没问题,应该是在其它地方把aaaa的值重新设为0了。检查“aaaa=0”一句所在的环境,或贴一个完整的能体现你的问题的例子。

In [88]: aaaa = 0

In [89]: class TestHandler:
    ...:     def handle(self):
    ...:         global aaaa
    ...:         print "aaaa"
    ...:         print aaaa
    ...:         aaaa += 1
    ...:         print aaaa
    ...:         print "end"
    ...:         

In [90]: handler = TestHandler()

In [91]: handler.handle()
aaaa
0
1
end

In [92]: handler.handle()
aaaa
1
2
end

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧