Python 中常见的高级语法用法 做一个系统总结,分成几个方面:


1. 数据结构相关

  • 列表推导式 / 集合推导式 / 字典推导式

    squares = [x*x for x in range(10)] 
    unique = {x % 3 for x in range(10)} 
    mapping = {x: x*x for x in range(5)} 

    简洁高效,替代循环生成。

  • 生成器表达式(惰性求值,节省内存)

    gen = (x*x for x in range(10)) 
    next(gen) 
  • 解包操作

    a, b, *rest = [1, 2, 3, 4, 5] # a=1, b=2, rest=[3,4,5] 
    first, *_, last = [10, 20, 30, 40] # 取首尾 

2. 函数高级用法

  • 可变参数

    def f(*args, **kwargs): 
        print(args, kwargs) 
    f(1, 2, x=3, y=4) 
  • lambda 表达式

    add = lambda x, y: x+y 
    sorted(data, key=lambda x: x.age) 
  • 函数作为一等公民(可传参、返回、赋值)

    def make_adder(n): 
        return lambda x: x+n 
    add5 = make_adder(5) 
  • 装饰器(修改或增强函数功能)

    def log(func): 
        def wrapper(*args, **kwargs): 
            print(f"调用 {func.__name__}") 
            return func(*args, **kwargs) 
        return wrapper 
    @log def hello(): print("hi") 
  • 偏函数functools.partial

    from functools import partial 
    pow2 = partial(pow, 2) # 相当于 pow(2, y) 

3. 迭代器 & 生成器

  • 迭代器协议:实现 __iter____next__

  • 生成器函数yield):节省内存,按需生成数据。

    def count_up(n): 
        for i in range(n): 
            yield i 
  • yield from(委托生成器)

    def chain(*iterables): 
        for it in iterables: 
            yield from it 

4. 面向对象高级语法

  • @property 装饰器(属性方法化)

    class Person: 
        def __init__(self, age): self._age = age 
        @property 
        def age(self): return self._age 
  • 类方法 / 静态方法

    class MyClass: 
        @classmethod 
        def create(cls): return cls() 
        @staticmethod 
        def util(): print("工具方法") 
  • 魔术方法(运算符重载等)

    class Vector: 
        def __init__(self, x, y): self.x, self.y = x, y 
        def __add__(self, other): return Vector(self.x+other.x, self.y+other.y) 
        def __repr__(self): return f"Vector({self.x}, {self.y})" 
  • 数据类 dataclass(自动生成 init、repr、eq 等方法)

    from dataclasses import dataclass 
    @dataclass 
    class Point: 
        x: int 
        y: int 

5. 上下文管理器

  • with 语句(自动资源管理)

    with open("file.txt") as f: 
        data = f.read() 
  • 自定义上下文管理器(实现 __enter__ / __exit__

    class MyRes: 
        def __enter__(self): print("enter"); return self 
        def __exit__(self, exc_type, exc, tb): print("exit") 
  • contextlib 简化

    from contextlib import contextmanager 
    @contextmanager 
    def my_cm(): 
        print("enter") 
        yield 
        print("exit") 

6. 函数式编程风格

  • map / filter / reduce

    from functools import reduce 
    nums = [1, 2, 3] 
    print(list(map(lambda x: x*2, nums))) 
    print(list(filter(lambda x: x>1, nums))) 
    print(reduce(lambda a, b: a+b, nums)) 
  • 列表/迭代器组合工具(itertools)

    import itertools 
    for p in itertools.permutations([1,2,3], 2): 
        print(p) 

7. 异步与并发

  • async/await(异步协程)

    import asyncio 
    async def foo(): 
        await asyncio.sleep(1) 
        print("done") 
    asyncio.run(foo()) 
  • 多线程 / 多进程threading, multiprocessing

    • 适合 I/O 密集:线程

    • 适合 CPU 密集:进程


8. 其他高级技巧

  • 类型注解(Type Hints)

    def add(x: int, y: int) -> int: 
        return x+y 
  • 海象运算符 := (Python3.8+)

    if (n := len([1,2,3])) > 2: 
        print(n) 
  • 解构合并字典

    d1, d2 = {"a":1}, {"b":2} 
    merged = {**d1, **d2} 
  • 枚举类

    from enum import Enum 
    class Color(Enum): 
        RED = 1 
        BLUE = 2 
  • 元类(metaclass):动态修改类的行为,高级框架常用(如 Django ORM)。


✅ 以上就是 Python 的常见高级语法用法总结,你可以把它当速查表。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐