杰瑞科技汇

Python networks文档如何快速入门?

  1. 网络请求:这是最常见的需求,即用 Python 与 Web 服务器进行交互(如爬取网页、调用 API)。
  2. 网络编程:指编写客户端/服务器程序,使用 TCP/IP、UDP 等协议进行底层通信。
  3. 神经网络:这是机器学习/深度学习领域的核心概念。
  4. 网络拓扑/图论:使用 Python 分析和操作网络结构(如社交网络、地图路径)。

网络请求

这是绝大多数 Python 开发者都会用到的功能,核心是向 URL 发送 HTTP/HTTPS 请求并获取响应。

Python networks文档如何快速入门?-图1
(图片来源网络,侵删)

核心库

a) requests - 非常推荐,现代且易用

requests 库被誉为“让 HTTP 服务人类”,极大地简化了网络请求的过程。

安装:

pip install requests

核心文档与资源:

核心功能与示例:

Python networks文档如何快速入门?-图2
(图片来源网络,侵删)
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 的标准库,是进行网络编程的基石。

核心文档与资源:

核心功能与示例:

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

核心文档与资源:

核心功能与示例 (使用 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

核心文档与资源:

核心功能与示例:

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

核心文档与资源:

核心功能与示例:

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/KerasPyTorch TensorFlow 指南, PyTorch 教程
网络拓扑 分析图结构、路径查找 networkx networkx 教程

希望这份详细的梳理能帮助你找到你需要的 Python 网络相关文档!如果你有更具体的需求,可以进一步提问。

分享:
扫描分享到社交APP
上一篇
下一篇