35.玩转Linux操作系统
基础教学 1 min read

35.玩转Linux操作系统

Blog Author

好的,我们继续输出剩余部分的教学内容,从第五模块开始。


五、collections模块:Python内置的高效数据结构

教学内容讲解

collections 模块提供了多种替代内建容器的数据结构,提升代码效率与可读性。

常用结构及功能:

数据结构 功能说明
Counter 计数器,用于统计可哈希对象的数量
defaultdict 带默认值的字典,避免 KeyError
OrderedDict 保留插入顺序的字典(Python 3.6+ 默认支持)
deque 双端队列,适合队列/栈操作
namedtuple 可命名字段的元组,提升代码可读性
ChainMap 将多个映射合并为一个视图

示例:

from collections import Counter, defaultdict, deque, namedtuple


# Counter:统计字符频率
cnt = Counter('mississippi')
print(cnt['s'])  # 输出 4


# defaultdict:防止KeyError
dd = defaultdict(int)
dd['x'] += 1  # 自动初始化为0再加1


# deque:两端添加高效
dq = deque([1, 2, 3])
dq.appendleft(0)
dq.append(4)


# namedtuple:具名元组
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y)

使用场景

  • 字符频率分析 / 投票计数
  • 滑动窗口算法(deque)
  • 数据清洗 / 日志分类(defaultdict)

最佳实践

  • Counter.most_common(n) 可获取 Top-N 出现频率元素
  • 替代传统字典时优先考虑 defaultdict 提高健壮性
  • deque 是线程安全的栈/队列结构

六、高阶函数与装饰器:函数式编程的利器

教学内容讲解

高阶函数是指接受函数作为参数或返回函数作为结果的函数,Python 中大量内置函数如 map()filter()sorted() 均支持函数式操作。

示例:

# 高阶函数 map + lambda
nums = [1, 2, 3]
squared = list(map(lambda x: x**2, nums))


# 装饰器:在函数执行前后加行为
def log(func):
    def wrapper(*args, **kwargs):
        print(f'Calling {func.__name__}...')
        return func(*args, **kwargs)
    return wrapper


@log
def greet(name):
    print(f'Hello, {name}!')


greet('Alice')

使用场景

  • 日志注入 / 权限检查(如 Flask 中的路由装饰器)
  • 高阶构造逻辑(函数返回函数,动态组合逻辑)
  • 并发控制、缓存管理等横切逻辑抽象

最佳实践

  • 使用 functools.wraps 保留原函数元信息
  • 装饰器内部可做认证、记录日志、异常捕获等
  • 匿名函数(lambda)应简洁,勿滥用

七、面向对象设计模式

教学内容讲解

Python 虽然是一种多范式语言,但对面向对象支持非常强。理解面向对象三大特性(封装、继承、多态)和常见设计模式有助于组织大型项目代码。

示例模式:

  • 单例模式(Singleton)
  • 工厂模式(Factory)
  • 装饰器模式(Decorator)
  • 策略模式(Strategy)

简单工厂示例:

class Dog:
    def speak(self):
        return "Woof"


class Cat:
    def speak(self):
        return "Meow"


def animal_factory(name):
    return Dog() if name == "dog" else Cat()


animal = animal_factory("cat")
print(animal.speak())  # Meow

使用场景

  • 游戏角色创建(工厂模式)
  • 权限体系(策略模式)
  • 应用配置(单例模式)

最佳实践

  • 合理使用抽象类(abc模块)
  • 模块内组织类使用清晰的层级关系
  • 多重继承需谨慎,避免菱形继承结构

八、迭代器与生成器:惰性计算与大数据处理的核心

教学内容讲解

迭代器是实现了 __iter__()__next__() 的对象,生成器是创建迭代器的快捷方式,使用 yield

示例:

def countdown(n):
    while n > 0:
        yield n
        n -= 1


for x in countdown(3):
    print(x)

使用场景

  • 分批读取大文件
  • 数据库分页加载
  • 网络流式数据处理(如 socket/日志处理)

最佳实践

  • 使用 yield 替代大列表,降低内存
  • 遇到“无限流”场景优先用生成器
  • itertools 是生成器的好搭档

九、并发编程基础:多线程/多进程与异步IO

教学内容讲解

Python 提供了三种主流并发方式:

并发方式 模块 适合场景
多线程 threading I/O密集型,如文件/网络
多进程 multiprocessing CPU密集型,如图像处理
协程/异步 asyncio 高并发,少阻塞,如网络爬虫

示例:多线程下载模拟

import threading


def task(name):
    print(f'{name} downloading...')

threads = []
for i in range(3):
    t = threading.Thread(target=task, args=(f'Thread-{i}',))
    threads.append(t)
    t.start()

示例:异步 IO

import asyncio


async def say_hello():
    await asyncio.sleep(1)
    print("Hello after 1 second")


asyncio.run(say_hello())

使用场景

  • 网络爬虫 / API 请求(asyncio + aiohttp)
  • 多核计算任务(multiprocessing)
  • GUI / 后台任务并发执行

最佳实践

  • 避免在多线程中使用共享变量(使用锁)
  • 异步IO中避免阻塞操作(使用异步版本)
  • 使用 concurrent.futures 实现线程池/进程池

十、总结与提升建议

学习建议

  • 掌握每个模块的核心API + 实战技巧
  • 熟练使用 Python TutorIPython 和调试器进行调试与可视化理解
  • 查阅官方文档 & 学习优秀开源项目(如 Flask、Requests、Scrapy)
  • 配合 pytest 单元测试提升代码鲁棒性

工具推荐

工具 作用
Python Tutor 代码可视化执行
ipdb / pdb 逐行调试 Python 程序
Black / isort 代码格式化工具
Jupyter Notebook 可交互的编程学习平台

如果你希望我整理为 PDF 或交互文档形式,或想对某部分深入讲解(如 asyncio 应用、装饰器高级语法等),请随时告诉我。是否还需要我补充练习题或实战项目建议?