新手友好、循序渐进的学习路线
通俗语言 + 小例子 + 最终实战

Python 基础
装饰器 / 生成器 / 异步编程
Python 异步原理
数据结构优化
最后:手写一个【异步请求工具函数】


一、Python 基础(必须打牢)

1️⃣ 变量 & 基本类型(先记住 4 个)

a = 10          # int
b = 3.14        # float
c = "hello"     # str
d = True        # bool

📌 口诀

数字、字符串、真假值


2️⃣ 容器类型(非常重要)

lst = [1, 2, 3]             # 列表(可变)
tup = (1, 2, 3)             # 元组(不可变)
dic = {"a": 1, "b": 2}      # 字典(键值对)
set_ = {1, 2, 3}            # 集合(去重)

📌 记忆法

  • 列表:顺序 + 能改
  • 字典:查找快
  • 集合:去重

3️⃣ 函数(Python 的灵魂)

def add(a, b):
    return a + b

print(add(2, 3))

二、生成器(Generator)——省内存神器

1️⃣ 普通函数 vs 生成器

def func():
    return 1
def gen():
    yield 1
    yield 2
    yield 3
g = gen()
print(next(g))  # 1
print(next(g))  # 2

📌 一句话理解

yield = 暂停函数,下次从这里继续

📌 为什么重要?

  • 不一次性加载所有数据
  • 适合大量数据 / 流式处理

三、装饰器(Decorator)——给函数“加功能”

1️⃣ 装饰器本质

函数包函数

def my_decorator(func):
    def wrapper():
        print("函数执行前")
        func()
        print("函数执行后")
    return wrapper
@my_decorator
def say():
    print("hello")

say()

📌 执行顺序

函数执行前
hello
函数执行后

📌 常见用途

  • 打日志
  • 统计耗时
  • 权限校验

四、异步编程(重点)

1️⃣ 同步 vs 异步

同步

一件事做完 → 才做下一件

异步

等待时先干别的事


2️⃣ async / await 基础

import asyncio

async def task():
    print("开始")
    await asyncio.sleep(1)
    print("结束")

asyncio.run(task())

📌 关键点

  • async def:定义异步函数
  • await:遇到耗时操作,让出控制权

五、Python 异步原理

核心只有 3 个词:

1️⃣ 事件循环(Event Loop)

一个“调度员”,负责安排任务执行

2️⃣ 协程(Coroutine)

能暂停、能继续的函数(async def

3️⃣ await

告诉事件循环:
“我这会儿要等,你先去执行别人”

📌 一句话总结

Python 异步 = 单线程 + 任务切换 + 不阻塞


六、数据结构优化

1️⃣ 列表 vs 字典查找速度

# 慢
if x in my_list:

# 快
if x in my_dict:

📌 原因

  • 字典是哈希表,查找 O(1)

2️⃣ 用 set 去重

lst = [1, 2, 2, 3]
new_lst = list(set(lst))

3️⃣ 用生成器减少内存

data = (i for i in range(1000000))

七、实战:手写一个【异步请求工具函数】

我们用 aiohttp(最常用)

1️⃣ 安装

pip install aiohttp

2️⃣ 最简单的异步 GET 请求

import aiohttp
import asyncio

async def fetch(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.text()

3️⃣ 升级版:通用异步请求工具函数(推荐)

import aiohttp
import asyncio

async def async_request(
    url,
    method="GET",
    params=None,
    data=None,
    headers=None,
    timeout=10
):
    async with aiohttp.ClientSession(
        timeout=aiohttp.ClientTimeout(total=timeout)
    ) as session:
        async with session.request(
            method=method,
            url=url,
            params=params,
            data=data,
            headers=headers
        ) as response:
            return {
                "status": response.status,
                "text": await response.text()
            }

4️⃣ 并发请求(异步真正的威力)

async def main():
    urls = [
        "https://httpbin.org/get",
        "https://httpbin.org/get",
        "https://httpbin.org/get"
    ]

    tasks = [async_request(url) for url in urls]
    results = await asyncio.gather(*tasks)

    for r in results:
        print(r["status"])

asyncio.run(main())

📌 这一步是质变

  • 同时发多个请求
  • 不阻塞
  • 单线程高性能

八、最终口诀记忆总图(送你口诀)

🔑 Python 进阶口诀

生成器省内存
装饰器加功能
异步靠 await
并发用 gather
查找用字典

下一篇进阶模型应用开发的基础工具与原理之Web 框架

九、参考文档

《Python 编程:从入门到实践》
B 站黑马程序员 Python 进阶课


有任何问题欢迎在评论区交流。

更多推荐