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 客户端、实时数据处理。
总结
直接硬吃干货