全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 18 道配套习题

网络编程专题

专题说明

网络编程是Python最擅长的领域之一。本专题从Socket底层编程出发,深入讲解TCP和UDP协议、HTTP客户端开发、requests库的使用、异步网络编程模型以及网络服务器的设计与实现,帮助学习者全面掌握Python网络编程的核心技能。

学习目标

  1. 掌握Socket编程的基本原理和用法
  2. 理解TCP和UDP协议的区别及适用场景
  3. 熟练使用requests库进行HTTP请求
  4. 了解异步网络编程的基本概念
  5. 能够开发简单的网络服务器

学习内容

本专题涵盖以下核心知识点:

Socket编程

  • Socket基本概念
  • TCP Socket客户端和服务器
  • UDP Socket
  • Socket选项和超时设置

HTTP客户端

  • urllib标准库
  • requests库核心用法
  • 请求和响应处理
  • 会话和连接池

异步网络

  • asyncio基础
  • aiohttp库
  • 异步并发请求

网络服务器

  • http.server模块
  • 自定义HTTP服务器
  • 并发服务器设计

学习建议

  1. 先理解网络协议基础,再动手实践Socket编程
  2. 日常开发优先使用requests库而非urllib
  3. 高并发场景考虑使用异步网络编程
  4. 注意网络操作的异常处理和超时设置

📝 配套习题(18 题)

💡 参考答案在文末
判断题
1

urllib.parse模块提供URL解析、编码和构造功能,包括urlencode编码查询参数、urlparse解析URL组成部分、quote编码特殊字符等。

A

B

2

Python主流Web框架包括Flask(轻量灵活)、Django(全功能企业级)、FastAPI(现代高性能,支持异步和自动API文档)。选择框架应根据项目规模和需求决定。

A

B

3

asyncio是Python的异步IO库,使用协程实现并发网络编程。async def定义协程函数,await等待异步操作完成,单个线程可以同时处理多个网络连接。

A

B

4

socketserver模块简化了网络服务器开发,提供TCPServer、UDPServer等类,通过继承StreamRequestHandler或DatagramRequestHandler处理请求,无需手动编写accept、recv等底层代码。

A

B

5

Python发送HTTP请求可以使用内置的urllib模块或第三方requests库。urllib是标准库无需安装,requests需要pip安装但API更简洁友好。

A

B

6

socket是Python网络编程的基础模块,提供TCP和UDP协议的通信能力。TCP是面向连接的可靠传输,UDP是无连接的快速传输。

A

B

单选题
7

urlparse('https://example.com:8080/path?q=1')返回的netloc是:

A

example.com

B

example.com:8080

C

https://example.com:8080

D

:8080

8

使用requests发送带参数的GET请求,正确的方式是:

A

requests.get(url + '?key=value')

B

requests.get(url, params={'key': 'value'})

C

requests.get(url, data={'key': 'value'})

D

requests.get(url).params = {'key': 'value'}

9

socket客户端连接服务器的正确顺序是:

A

send → connect → recv

B

connect → recv → send

C

connect → send → recv

D

bind → connect → send

10

socketserver.StreamRequestHandler中,读取客户端数据应使用:

A

self.client.recv()

B

self.rfile.readline()

C

self.read()

D

self.socket.recv()

11

asyncio.gather(*tasks)的作用是:

A

按顺序依次执行任务

B

并发执行多个任务并等待全部完成

C

只执行第一个任务

D

取消所有任务

12

创建TCP socket的正确代码是:

A

socket.socket(socket.AF_INET)

B

socket.socket(socket.AF_INET, socket.SOCK_STREAM)

C

socket.socket(socket.SOCK_STREAM)

D

socket.tcp_socket()

13

哪个框架最适合需要自动生成OpenAPI文档的高性能异步API项目?

A

Flask

B

Django

C

FastAPI

D

Tornado

填空题
14

requests.____________(url)发送GET请求。____________(url, ____________={})发送JSON。params参数用于GET查询参数。data参数用于POST表单。headers添加请求头。response.status_code获取状态码。text获取文本。json()解析JSON。cookies获取cookie。

15

urlparse返回____________(协议)、____________(网络位置)、____________(路径)、query(查询)。urlencode编码参数字典。quote编码单个字符串。unquote解码字符串。parse_qs解析查询参数。中文需要编码才能用于URL。特殊字符如空格也要编码。

16

socketserver.____________创建TCP服务器。Handler继承________________________方法处理请求。rfile读取数据,wfile写入数据。serve_forever启动服务。ThreadingTCPServer支持多线程。client_address获取客户端地址。shutdown关闭服务器。UDPServer用于UDP。

17

socket.____________(('localhost', ____________))绑定地址端口。____________(n)开始监听。accept()接收连接,返回conn和addr。recv(1024)接收数据。send(b'data')发送数据。close()关闭连接。TCP使用SOCK_STREAM。

18

____________ def定义协程函数。____________等待异步操作。____________()运行主协程。gather()并发执行多个任务。create_task()创建任务对象。sleep()模拟异步等待。协程在单线程内实现并发。异步IO适合网络密集型应用。asyncio.start_server()创建异步服务器。

参考答案
1.正确 2.正确 3.正确 4.正确 5.正确 6.正确 7.B 8.B 9.C 10.B 11.B 12.B 13.C 14.get;post;json 15.scheme;netloc;path 16.TCPServer;StreamRequestHandler;handle 17.bind;port;listen 18.async;await;asyncio.run
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 类型注解专题
下一个专题 → 装饰器深入专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码