- 网络请求:这是最常见的需求,即用 Python 与 Web 服务器进行交互(如爬取网页、调用 API)。
- 网络编程:指编写客户端/服务器程序,使用 TCP/IP、UDP 等协议进行底层通信。
- 神经网络:这是机器学习/深度学习领域的核心概念。
- 网络拓扑/图论:使用 Python 分析和操作网络结构(如社交网络、地图路径)。
网络请求
这是绝大多数 Python 开发者都会用到的功能,核心是向 URL 发送 HTTP/HTTPS 请求并获取响应。

核心库
a) requests - 非常推荐,现代且易用
requests 库被誉为“让 HTTP 服务人类”,极大地简化了网络请求的过程。
安装:
pip install requests
核心文档与资源:
- 官方文档: https://docs.python-requests.org/zh_CN/latest/ (有中文版,非常详细)
- 快速上手指南: https://docs.python-requests.org/zh_CN/latest/user/quickstart.html
核心功能与示例:

import requests
# 1. 发送 GET 请求 (最常见)
try:
# 发送一个 GET 请求到 GitHub API
response = requests.get('https://api.github.com/events')
# 检查请求是否成功 (状态码 200)
response.raise_for_status() # 如果状态码不是 2xx,则会抛出异常
# 获取响应内容
# response.text: 获取原始文本内容 (str)
# response.json(): 将响应内容解析为 JSON 对象 (dict/list)
# response.content: 获取原始字节内容 (bytes)
data = response.json()
print(f"请求成功,状态码: {response.status_code}")
print(f"返回的 JSON 数据 (第一条): {data[0]}")
except requests.exceptions.HTTPError as errh:
print(f"Http 错误: {errh}")
except requests.exceptions.ConnectionError as errc:
print(f"连接错误: {errc}")
except requests.exceptions.Timeout as errt:
print(f"请求超时: {errt}")
except requests.exceptions.RequestException as err:
print(f"发生错误: {err}")
# 2. 发送 POST 请求 (通常用于提交数据)
# 发送表单数据
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post('https://httpbin.org/post', data=payload)
print(r.json())
# 发送 JSON 数据
json_payload = {'name': 'John', 'age': 30}
r = requests.post('https://httpbin.org/post', json=json_payload)
print(r.json())
# 3. 传递 URL 参数
params = {'q': 'python', 'page': 2}
r = requests.get('https://httpbin.org/get', params=params)
print(r.url) # 可以看到 URL 自动被编码为 https://httpbin.org/get?q=python&page=2
# 4. 自定义请求头
headers = {'User-Agent': 'MyCoolApp/1.0'}
r = requests.get('https://httpbin.org/headers', headers=headers)
print(r.json())
b) urllib - Python 标准库
urllib 是 Python 内置的库,无需安装,它比 requests 更底层,功能分散在几个模块中(request, parse, error),使用起来稍显繁琐。
核心文档与资源:
核心功能与示例:
from urllib.request import urlopen
from urllib.parse import urlencode
# 1. 发送 GET 请求
url = 'https://httpbin.org/get'
params = {'name': 'Alice', 'age': 25}
# 将字典参数编码为 URL 查询字符串
query_string = urlencode(params)
full_url = f"{url}?{query_string}"
with urlopen(full_url) as response:
# 读取响应内容
body = response.read()
print(body.decode('utf-8')) # 解码为字符串
# 2. 发送 POST 请求 (需要手动处理数据编码)
from urllib.request import Request
post_url = 'https://httpbin.org/post'
post_data = urlencode({'key': 'value'}).encode('utf-8') # 数据必须是 bytes
req = Request(post_url, data=post_data, method='POST')
with urlopen(req) as response:
print(response.read().decode('utf-8'))
对比:
| 特性 | requests | urllib |
| :--- | :--- | :--- |
| 易用性 | 极高,API 直观 | 较低,需要手动处理很多细节 |
| 依赖 | 第三方库,需安装 | Python 标准库,无需安装 |
| 功能 | 封装完善,会话、Cookie、代理等一应俱全 | 功能基础,需自己组合实现高级功能 |
| 推荐度 | 强烈推荐,绝大多数场景首选 | 仅在无法安装第三方库的环境下使用 |
网络编程
网络编程指的是基于 TCP/IP 协议栈进行编程,实现客户端和服务器之间的直接通信。
核心库: socket
socket 是 Python 的标准库,是进行网络编程的基石。
核心文档与资源:
- 官方文档: https://docs.python.org/3/library/socket.html
- Socket HOWTO: https://docs.python.org/3/howto/sockets.html (必读,非常经典的入门教程)
核心功能与示例:
a) TCP 服务器
# server.py
import socket
# 创建一个 TCP socket 对象
# AF_INET 表示使用 IPv4 地址
# SOCK_STREAM 表示使用 TCP 协议
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定 IP 地址和端口号
# '' 表示监听本机所有可用网络接口
server_address = ('', 12345)
server_socket.bind(server_address)
# 开始监听,允许最多 1 个客户端连接
server_socket.listen(1)
print(f"服务器启动,监听在 {server_address[0]}:{server_address[1]}")
# 等待客户端连接
client_socket, client_address = server_socket.accept()
print(f"已连接来自 {client_address} 的客户端")
# 接收客户端数据
data = client_socket.recv(1024) # 最多接收 1024 字节
print(f"收到来自客户端的消息: {data.decode('utf-8')}")
# 向客户端发送数据
response = "你好,客户端!"
client_socket.sendall(response.encode('utf-8'))
# 关闭连接
client_socket.close()
server_socket.close()
b) TCP 客户端
# client.py
import socket
# 创建一个 TCP socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
server_address = ('127.0.0.1', 12345) # 连接到本地的服务器
print(f"正在连接到 {server_address}...")
client_socket.connect(server_address)
# 向服务器发送数据
message = "你好,服务器!"
client_socket.sendall(message.encode('utf-8'))
print(f"已发送消息: {message}")
# 接收服务器响应
data = client_socket.recv(1024)
print(f"收到来自服务器的消息: {data.decode('utf-8')}")
# 关闭连接
client_socket.close()
神经网络
神经网络是深度学习的基础,Python 生态系统中有多个强大的库用于构建和训练神经网络。
核心库
a) TensorFlow / Keras - 工业界主流
Google 开发,生态系统非常完善,从研究到生产部署都有成熟的解决方案,Keras 是其高级 API,简洁易用。
安装:
pip install tensorflow
核心文档与资源:
- TensorFlow 官方文档: https://www.tensorflow.org/guide (有中文版)
- Keras 用户指南: https://keras.io/guiders/
核心功能与示例 (使用 Keras):
import tensorflow as tf
from tensorflow import keras
# 1. 准备数据 (使用 MNIST 手写数字数据集)
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 归一化像素值到 0-1 之间
x_train, x_test = x_train / 255.0, x_test / 255.0
# 2. 构建模型
model = keras.Sequential([
# 将输入的 2D 图像展平为 1D 向量
keras.layers.Flatten(input_shape=(28, 28)),
# 添加一个具有 128 个神经元和 ReLU 激活函数的全连接层
keras.layers.Dense(128, activation='relu'),
# 添加一个 Dropout �层,防止过拟合
keras.layers.Dropout(0.2),
# 添加输出层,10 个类别 (0-9),使用 Softmax 激活函数
keras.layers.Dense(10, activation='softmax')
])
# 3. 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 4. 训练模型
model.fit(x_train, y_train, epochs=5)
# 5. 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f"\n测试准确率: {test_acc}")
b) PyTorch - 学术界主流
Facebook (Meta) 开发,以其灵活性和动态计算图而闻名,在研究领域非常受欢迎。
安装:
pip install torch torchvision
核心文档与资源:
- PyTorch 官方文档: https://pytorch.org/docs/stable/index.html
- PyTorch 教程: https://pytorch.org/tutorials/
核心功能与示例:
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
# 1. 准备数据
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
test_dataset = datasets.MNIST(root='./data', train=False, transform=transform)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=64, shuffle=False)
# 2. 定义神经网络模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(28 * 28, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = x.view(-1, 28 * 28) # 展平
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
model = Net()
# 3. 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 4. 训练模型
for epoch in range(5):
for data, target in train_loader:
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
print(f"Epoch {epoch+1}, Loss: {loss.item()}")
# 5. 评估模型 (略)
网络拓扑/图论
这个领域主要处理网络结构数据,如社交网络、朋友关系、地图路径、电路设计等。
核心库: networkx
networkx 是一个用于创建、操作和研究复杂网络结构、动态和功能的 Python 库。
安装:
pip install networkx
核心文档与资源:
- 官方文档: https://networkx.org/documentation/stable/
- 教程: https://networkx.org/documentation/stable/tutorial.html
核心功能与示例:
import networkx as nx
import matplotlib.pyplot as plt
# 1. 创建一个空图
G = nx.Graph()
# 2. 添加节点
G.add_node("A")
G.add_node("B")
G.add_node("C")
# 3. 添加边 (连接)
G.add_edge("A", "B")
G.add_edge("B", "C")
G.add_edge("A", "C")
# 4. 分析图
print(f"节点列表: {list(G.nodes)}")
print(f"边列表: {list(G.edges)}")
print(f"节点 'A' 的邻居: {list(G.neighbors('A'))}")
print(f"图的度数: {dict(G.degree)}")
# 5. 可视化图
# 需要安装 matplotlib: pip install matplotlib
nx.draw(G, with_labels=True, node_color='skyblue', node_size=1500, font_size=20)
plt.show()
# 6. 计算最短路径
try:
shortest_path = nx.shortest_path(G, source="A", target="C")
print(f"从 A 到 C 的最短路径是: {shortest_path}")
except nx.NetworkXNoPath:
print("节点之间没有路径。")
# 7. 创建有向图
DG = nx.DiGraph()
DG.add_edge("A", "B") # A -> B
DG.add_edge("B", "C") # B -> C
print(f"\n有向图的边: {list(DG.edges)}")
总结与选择建议
| 领域 | 核心任务 | 推荐库 | 关键文档 |
|---|---|---|---|
| 网络请求 | 调用 API、爬取网页 | requests |
requests 官方文档 |
| 网络编程 | 开发客户端/服务器应用 | socket (标准库) |
Socket HOWTO |
| 神经网络 | 机器学习、深度学习 | TensorFlow/Keras 或 PyTorch |
TensorFlow 指南, PyTorch 教程 |
| 网络拓扑 | 分析图结构、路径查找 | networkx |
networkx 教程 |
希望这份详细的梳理能帮助你找到你需要的 Python 网络相关文档!如果你有更具体的需求,可以进一步提问。
