python网络编程
要进行网络通信需要进行通讯连接,在python中,使用socket套接字来建立连接。
客户端和服务端都是使用socket来建立连接。
服务端建立连接需要四步,新建socket,绑定ip和端口(bind),监听连接,接受连接。
import socket
server = socket.socket() # 1. 新建socket
server.bind(('127.0.0.1', 8999)) # 2. 绑定IP和端口(其中127.0.0.1为本机回环IP)
server.listen(5) # 3. 监听连接
s, addr = server.accept() # 4. 接受连接
print('connect addr:{}'.format(addr))
content =s.recv(1024)
print(str(content, encoding='utf-8')) # 接受来自客户端的消息,并编码打印出来
s.close()
客户端建立连接只需要两步,新建socket,链接服务端。
import socket
client = socket.socket() # 1. 新建socket
client.connect(('127.0.0.1', 8999)) # 2. 连接服务端(注意,IP和端口要和服务端一致)
client.send(bytes('Hello World. Hello Socket', encoding='utf-8')) # 发送内容,注意发送的是字节字符串。
client.close()
python 自带http服务器
python -m http.server
#启动成功后
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
接着就可以在浏览器输入127.0.0.1:8000,可以打开一个网页,会出现所有的运行目录文件列出来,并提供下载功能。
一般情况系会使用request包来进行http请求,安装requests
pip install requests
使用requests来请求
response = requests.get('https://www.imooc.com')
# 打印状态码
print(response.status_code)
# 打印回应头
print(response.headers)
content = str(response.content, encoding='utf-8') # ==> 打印具体内容
python的函数式编程
python的map函数,map()函数会一次返回一个迭代器,可以一次返回处理的结果。
def f(x):
return x*x
for item in map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]):
print(item)
python的reduce函数和map函数类似,一个函数f,一个list,但reduce函数传入的数据必须接受两个参数。在py3中reduce被收录到functools包里。
from functools import reduce
def f(x, y):
return x + y
print(reduce(f, [1,3,5,7,9])) # ==> 25
filter函数的作用是对每个元素进行判断。返回TRUE 或者False。filter根据判断过滤掉不符合条件的结果。并返回一个迭代器。可以迭代出符合条件的所有元素。
#奇数函数
def is_odd(x):
return x % 2 == 1
#返回结果
for item in filter(is_odd, [1, 4, 6, 7, 9, 12, 17]):
print(item) ----1,7,9,17。