在python的源文件中可以直接定义变量,但是直接在global范围内定义的变量是不能在方法中使用的,如果要在方法中使用必须使用global var引入全局变量。
如下代码片段:
from SocketServer import TCPServer,ThreadingMixIn,StreamRequestHandler
import atexit
class Server (TCPServer,ThreadingMixIn): pass
class Handler(StreamRequestHandler):
def handle(self):
client = self.request.getpeername()
print 'get connection from %s',client
self.wfile.write('thank you for connecting me')
self.wfile.close()
server = Server(('127.0.0.1',10003),Handler)
server_closed = False
@atexit.register
def close_server():
global server_closed
if server_closed : return
print 'start shutdown server...'
server.shutdown()
server_closed = True
print 'shutdown over'
try:
server.serve_forever()
except Exception,e:
print e
finally:
close_server()
这里有更清楚的解释:http://www.wellho.net/forum/Programming-in-Python-and-Ruby/Variable-scope-in-Python.html