本文主要内容:将Web框架和Web服务器结合实现简单的服务器,及相关python知识的了解
0x01 服务器代码(MyWebServer.py)
1  | # coding:utf-8  | 
1.1 sys.argv
sys.argv[]一个从程序外部获取参数的桥梁,外部参数不唯一,所以sys.argv以列表形式存储参数;其第一个元素是程序本身,随后才依次是外部给予的参数
简单测试
1  | #本测试是在jupyter notebook中测试  | 
['c:\\users\\fishmouse\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\ipykernel_launcher.py',
 '-f',
 'C:\\Users\\fishmouse\\AppData\\Roaming\\jupyter\\runtime\\kernel-049997d2-f810-4826-9743-6db3b4d2e9ea.json']- 本地测试
 
测试代码
1  | import sys  | 
测试结果(第三个输出原因是在测试代码中打印了b[0])

Pycharm为当前程序添加(python MyWebServer.py)的参数


0x02 Web框架代码(MyWebFramework.py)
1  | # coding:utf-8  | 
2.1 __call__
- 在Python中,函数其实是一个对象:
 
1  | f=abs  | 
'abs'1  | f(-123)  | 
123
由于 f 可以被调用,所以,f 被称为可调用对象。
所有的函数都是可调用对象。
一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。- 我们把 Person 类变成一个可调用对象:
 
1  | class Person(object):  | 
- 可以对 Person 实例直接调用:
 
1  | p = Person('Bob', 'male')  | 
My name is Bob...
My friend is Tim...
单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。测试结果

    
