首页 > 代码库 > python第十天

python第十天

不知不觉已经第十天学习了啊,目测还差上一个礼拜也就是开始学习python两个月了,估计写不到第十一篇了暂时,因为这两天在研究openstack,感觉特别好,写完这个去写一篇关于云的,其实这才是今天突然写博客的主要目的~~~

这一篇还是主要关于socket编程的,再对Python2.7版本的继承方式了解一下,还有作用域

1.作用域:

 1 #!/usr/bin/env python 2 if 1 == 1:                                #python无块级作用域 3     name = ace 4 print(name) 5  6 for i in range(10): 7     name = i 8 print(name) 9 10 11 def func():                                 #python以函数作为作用域12     name = mmm13 func()14 print(name)15 16 li = [lambda :x for x in range(100)]17 r = li[0]()18 print(r)
1 C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe C:/Users/Administrator/PycharmProjects/ACE/study10/s1.py2 ace3 94 95 996 7 Process finished with exit code 0

2.socket源码结构:我画图实在是惨不忍睹,直接复制别人的吧....武sir的,弄大点,眼神不好使....这一段全是复制的了,很明显不是我写博客的中二风格(http://www.cnblogs.com/wupeiqi/articles/5040823.html)

技术分享

 

内部调用流程为:

  • 启动服务端程序
  • 执行 TCPServer.__init__ 方法,创建服务端Socket对象并绑定 IP 和 端口
  • 执行 BaseServer.__init__ 方法,将自定义的继承自SocketServer.BaseRequestHandler 的类 MyRequestHandle赋值给self.RequestHandlerClass
  • 执行 BaseServer.server_forever 方法,While 循环一直监听是否有客户端请求到达 ...
  • 当客户端连接到达服务器
  • 执行 ThreadingMixIn.process_request 方法,创建一个 “线程” 用来处理请求
  • 执行 ThreadingMixIn.process_request_thread 方法
  • 执行 BaseServer.finish_request 方法,执行 self.RequestHandlerClass()  即:执行 自定义 MyRequestHandler 的构造方法(自动调用基类BaseRequestHandler的构造方法,在该构造方法中又会调用 MyRequestHandler的handle方法)

 

ps:需要注意的就是pycharm不是万能的....

 

 

 

3.进程线程,下篇跟协程一起再写吧,不然乱了

4.python2.7的继承关系

默认一条道走到黑,如下图

技术分享

但是当继承object类后就会与3.5一个风格,3.5的所有类已经默认全部继承了object类,唯一的区别,我没2.7的版本,代码不写了,but技术分享

python第十天