Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Python 高级用法

🔥 Python 高级用法大全(最强版)

以下把 Python 高级用法分成 12 大类,覆盖你可能遇到的绝大部分高级需求。

1. 迭代器 / 生成器 / 惰性计算(核心)

自定义迭代器

class Counter:
    def __init__(self, n):
        self.i = 0
        self.n = n
    def __iter__(self):
        return self
    def __next__(self):
        if self.i < self.n:
            self.i += 1
            return self.i
        raise StopIteration

生成器(yield)

def gen():
    for i in range(10):
        yield i

yield from(委托另一个迭代器)

def wrapper():
    yield from range(5)

2. 装饰器(Decorator)

基本装饰器

def log(fn):
    def wrapper(*a, **kw):
        print(f"call: {fn.__name__}")
        return fn(*a, **kw)
    return wrapper

带参数装饰器

def prefix(p):
    def deco(fn):
        def wrapper(*a, **kw):
            print(p)
            return fn(*a, **kw)
        return wrapper
    return deco

类装饰器

class Deco:
    def __init__(self, fn):
        self.fn = fn
    def __call__(self, *a, **kw):
        return self.fn(*a, **kw)

3. 上下文管理器(context manager)

自定义上下文

class Timer:
    def __enter__(self):
        self.start = time.time()
    def __exit__(self, *exc):
        print(time.time() - self.start)

contextlib.suppress

from contextlib import suppress

with suppress(KeyError):
    {}["x"]

contextmanager 装饰器

from contextlib import contextmanager
@contextmanager
def open_file(path):
    f = open(path)
    try:
        yield f
    finally:
        f.close()

4. 闭包(Closure)

def make_adder(x):
    def adder(y):
        return x + y
    return adder

5. 高阶函数(Higher-order Functions)

使用函数作为参数:

  • map
  • filter
  • reduce
  • 自定义回调
def apply(fn, x):
    return fn(x)

6. 元类(Metaclass)

高级框架常用(ORM, FastAPI, DRF):

class Meta(type):
    def __new__(cls, name, bases, attrs):
        attrs["tag"] = "from metaclass"
        return super().__new__(cls, name, bases, attrs)

7. 描述符(Descriptor)

属性拦截:

class Field:
    def __get__(self, inst, owner):
        return inst.__dict__["value"]
    def __set__(self, inst, val):
        inst.__dict__["value"] = val

class Model:
    value = Field()

ORM 底层核心:如 SQLAlchemy.

8. 协程 / asyncio(异步编程)

async/await

async def worker():
    await asyncio.sleep(1)
    return 42

并发执行

await asyncio.gather(func1(), func2())

9. 类型注解(typing)与 Pydantic

泛型类型

from typing import List, Dict, Optional, Callable

TypedDict

class User(TypedDict):
    name: str
    age: int

10. 内置魔术方法(dunder methods)

自定义行为

class A:
    def __len__(self): ...
    def __repr__(self): ...
    def __getitem__(self, item): ...
    def __eq__(self, other): ...

实现切片

def __getitem__(self, key):
    if isinstance(key, slice):
        ...

11. 函数式技巧:lambda、partial、柯里化

lambda

func = lambda x: x * 2

partial

from functools import partial
add2 = partial(add, 2)

12. 内置高级数据结构

collections

  • deque
  • defaultdict
  • Counter
  • namedtuple

heapq(最小堆)

import heapq

functools.lru_cache(缓存)

@lru_cache
def fib(n): ...

🎯 额外加分:Python 中真正高级的主题

以下是高级开发者必须掌握的:

  • GIL(全局解释器锁)
  • 多线程 vs 多进程
  • asyncio 事件循环
  • 内存管理、引用计数
  • 垃圾回收 GC
  • CPython 执行模型
  • with / context manager 底层原理
  • 装饰器底层:函数对象、闭包
  • 元类与类创建流程
  • descriptor + metaclass = ORM 的底层原理
  • 持续优化:PEP8、typing、myPy、black、ruff、pytest