前端害怕被蒸馏 快速入门Python 【demo_03】

0 阅读5分钟

Python 基础知识点技术说明文档

概述

本文档总结了 Python 编程中的核心概念,包括自定义迭代器、生成器、高阶函数、装饰器、上下文管理器、异常处理和异步编程。这些知识点是构建企业级应用的基石。

1. 自定义迭代器

定义

自定义迭代器需要实现 __iter__()__next__() 方法。__iter__() 方法返回迭代器对象本身,而 __next__() 方法返回下一个元素,如果没有更多元素可供迭代,则抛出 StopIteration 异常。

示例代码

print("使用自定义迭代器:")
class MyIterator:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.end:
            raise StopIteration
        self.current += 1
        return self.current - 1

for num in MyIterator(0, 3):
    print(num)  # 输出 0, 1, 2

应用场景

  • 自定义数据流处理,如分页数据加载。
  • 企业级:大数据处理框架中的自定义数据源。

2. 生成器函数和表达式

生成器函数

生成器函数使用 yield 关键字来生成一个迭代器,每次调用 next() 时会从上次 yield 的位置继续执行,直到遇到 StopIteration 异常。

示例代码

print("\n使用生成器函数:")
def my_generator(start, end):
    current = start
    while current < end:
        yield current
        current += 1
for num in my_generator(0, 3):
    print(num)  # 输出 0, 1, 2

生成器表达式

生成器表达式是一种简洁的语法,用于创建生成器对象。它类似于列表推导式,但使用圆括号而不是方括号。

print("\n使用生成器表达式:")
squares = (x**2 for x in range(5))
for square in squares:
    print(square)  # 输出 0, 1, 4, 9, 16

应用场景

  • 内存高效处理大数据集。
  • 企业级:流式数据处理、日志分析。

3. 高阶函数

主要函数

  • map(func, iterable): 对每个元素应用函数。
  • reduce(func, iterable): 累积计算。
  • filter(func, iterable): 筛选元素。
  • zip(*iterables): 打包多个可迭代对象。
  • enumerate(iterable): 添加索引。
  • sorted(iterable): 排序(不修改原列表)。
  • reversed(iterable): 反转。
  • all(iterable): 所有元素为真。
  • any(iterable): 至少一个元素为真。

示例代码

print("\n1. map() 函数:")
squared = map(lambda x: x**2, range(5)) # range(5) 生成一个迭代器,包含 0, 1, 2, 3, 4
print(list(squared))  # 输出 [0, 1, 4, 9, 16]

print("\n2. reduce() 函数:")
from functools import reduce
product = reduce(lambda x, y: x * y, range(1, 5)) # range(1, 5) 生成一个迭代器,包含 1, 2, 3, 4
print(product)  # 输出 24 (1*2*3*4)

print("\n3. filter() 函数:")
even_numbers = filter(lambda x: x % 2 == 0, range(10))
print(list(even_numbers))  # 输出 [0, 2, 4, 6, 8]

print("\n4. zip() 函数:")
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
print(list(zipped))  # 输出 [(1, 'a'), (2, 'b'), (3, 'c')]
list3 = ['apple', 'banana']
list4 = ['Apple', 'Banana']
zipped_case = zip(list3, list4) # 输出 [('apple', 'Apple'), ('banana', 'Banana')]

# 如何输出[{apple:Apple}, {banana:Banana}]
zipped_case_dict = {k: v for k, v in zipped_case}
print(zipped_case_dict)  # 输出 {'apple': 'Apple', 'banana': 'Banana'}

print("\n5. enumerate() 函数:")
items = ['apple', 'banana', 'cherry']
for index, item in enumerate(items):
    print(index, item)  # 输出 0 apple, 1 banana, 2 cherry
    
print("\n6. sorted() 函数:")
numbers = [3, 1, 4, 1, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出 [1, 1, 3, 4, 5]
print(numbers)  # 输出 [3, 1, 4, 1, 5] (原列表未被修改)

print("\n7. reversed() 函数:")
numbers = [1, 2, 3, 4, 5]
reversed_numbers = reversed(numbers)
print(list(reversed_numbers))  # 输出 [5, 4, 3, 2, 1]

print("\n8. all() 函数:")
values = [True, True, False]
print(all(values))  # 输出 False
values = [True, True, True]
print(all(values))  # 输出 True

print("\n9. any() 函数:")
values = [False, False, False]
print(any(values))  # 输出 False
values = [False, True, False]
print(any(values))  # 输出 True

应用场景

  • 函数式编程风格。
  • 企业级:数据转换、聚合计算。

4. 装饰器

定义

装饰器是一种函数,它接受一个函数作为参数,并返回一个新的函数。装饰器可以用来修改或增强原函数的行为,而不需要修改原函数的代码。

示例代码

print("\n使用装饰器:")
def decorator(func):
    def wrapper(*args, **kwargs):
        print("这是装饰器的前置操作")
        result = func(*args, **kwargs)
        print("这是装饰器的后置操作")
        return result
    return wrapper
@decorator
def say_hello(name):
    print(f"Hello, {name}!")
say_hello("Alice")  # 输出装饰器的前置操作, Hello, Alice!, 装饰器的后置操作

企业级应用场景

  • 日志记录:自动记录函数调用。
  • 权限验证:检查用户权限。
  • 性能监控:测量执行时间。
  • 缓存:缓存结果。
  • 重试机制:失败时重试。

5. 上下文管理器

定义

上下文管理器是一种对象,它定义了 enter() 和 exit() 方法,可以在 with 语句中使用。上下文管理器可以用来管理资源的获取和释放,例如文件操作、数据库连接等。

示例代码

print("\n使用上下文管理器:")
class MyContextManager:
    def __enter__(self):
        print("进入上下文管理器")
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        print("退出上下文管理器")
with MyContextManager() as manager:
    print("在上下文管理器中执行操作")

企业级应用场景

  • 文件操作:自动关闭文件。
  • 数据库连接:自动提交/回滚。
  • 锁管理:自动释放锁。
  • 网络连接:管理连接池。
  • 临时资源:自动清理。

6. 异常处理

语法

异常处理是指在程序运行过程中捕获和处理错误,以避免程序崩溃。Python 使用 try-except 语句来进行异常处理。

示例代码

print("\n使用异常处理:")
try:
    result = 10 / 0  # 这会引发 ZeroDivisionError 异常
except ZeroDivisionError as e:
    print("捕获到异常:", e)

应用场景

  • 错误恢复和日志记录。
  • 企业级:健壮的错误处理策略。

7. 异步和协程

定义

异步编程是一种编程范式,它允许程序在等待某些操作完成时继续执行其他任务。Python 使用 async 和 await 关键字来实现异步编程. 处理高并发 I/O 任务的黄金标准库是 asyncio,它提供了一个事件循环和一套用于编写异步代码的工具。

示例代码

import asyncio
print("\n使用异步和协程:")
async def fetch_data(id):
    print(f"获取数据 {id} 开始")
    await asyncio.sleep(1)  # 模拟非阻塞的异步 I/O 操作
    print(f"获取数据 {id} 结束")
    return {"id": id, "data": "dummy"}

async def main():
    # 并发执行多个任务
    results = await asyncio.gather(
        fetch_data(1),
        fetch_data(2),
        fetch_data(3)
    )
    print(results)

asyncio.run(main())

应用场景

  • 高并发 I/O 任务,如网络请求、文件 I/O。
  • 企业级:Web 服务器、API 客户端、实时数据处理。

总结

直接硬吃干货