Python_Note5
Contents
Python 笔记补充内容
本文件补充了前四个笔记中缺失的重要知识点。
一、类型注解(Type Hints)
Python 3.5+ 引入了类型注解,可以在函数定义时指定参数和返回值的类型,提高代码可读性和 IDE 支持。
基本类型注解
|
|
复杂类型注解
|
|
使用 TypeVar 定义泛型
|
|
二、上下文管理器(Context Manager)
使用 with 语句
|
|
使用 contextlib 创建上下文管理器
|
|
三、生成器(Generator)
生成器是一种特殊的迭代器,使用 yield 语句生成值,节省内存。
生成器函数
|
|
yield from 语法
|
|
无限生成器
|
|
四、itertools 常用函数
|
|
五、functools 常用函数
|
|
六、collections 常用容器
|
|
七、数据类(dataclass)
Python 3.7+ 引入了 dataclass,简化类的定义。
|
|
八、枚举类(Enum)
|
|
九、asyncio 异步编程基础
|
|
十、pathlib 进阶用法
|
|
十一、Python 版本差异速查
Python 2 vs Python 3 主要差异
| 特性 | Python 2 | Python 3 |
|---|---|---|
print "hello" |
print("hello") |
|
| 整数除法 | 5/2 = 2 |
5/2 = 2.5 |
| 字符串 | 默认 ASCII | 默认 Unicode |
| range | 返回列表 | 返回迭代器 |
| input | 返回表达式结果 | 返回字符串 |
| 类定义 | class A: 是旧式类 |
class A: 是新式类 |
Python 3 新特性时间线
- 3.5: 类型注解、async/await 语法、
math.inf - 3.6: f-string、变量注解、asyncio 改进
- 3.7: dataclass、字典有序(官方保证)、asyncio.run()
- 3.8: 海象运算符
:=、位置参数/ - 3.9: 字典合并
|、泛型类型注解list[int] - 3.10: match-case 语句、结构化模式匹配
- 3.11: 更快启动速度、异常组
ExceptionGroup - 3.12: 类型参数语法
def f[T](x: T): ...
十二、常用内置函数速查
| 函数 | 说明 | 示例 |
|---|---|---|
len() |
返回长度 | len([1,2,3]) → 3 |
range() |
生成数字序列 | range(5) → 0,1,2,3,4 |
enumerate() |
带索引遍历 | enumerate(['a','b']) → (0,‘a’), (1,‘b’) |
zip() |
并行迭代 | zip([1,2], ['a','b']) → (1,‘a’), (2,‘b’) |
map() |
应用函数 | map(str, [1,2,3]) → ‘1’,‘2’,‘3’ |
filter() |
过滤元素 | filter(lambda x:x>0, [-1,1]) → 1 |
sorted() |
排序 | sorted([3,1,2]) → [1,2,3] |
reversed() |
反转 | reversed([1,2,3]) → 3,2,1 |
sum() |
求和 | sum([1,2,3]) → 6 |
max() / min() |
最大/最小 | max([1,5,3]) → 5 |
any() / all() |
逻辑判断 | any([False, True]) → True |
abs() |
绝对值 | abs(-5) → 5 |
round() |
四舍五入 | round(3.5) → 4 |
isinstance() |
类型检查 | isinstance(5, int) → True |
type() |
返回类型 | type(5) → int |
dir() |
返回属性列表 | dir(str) |
help() |
帮助信息 | help(print) |
十三、字符串格式化对比
|
|
十四、常用魔法方法速查
| 方法 | 说明 | 示例用途 |
|---|---|---|
__init__ |
初始化 | 构造函数 |
__str__ |
字符串表示 | print(obj) |
__repr__ |
详细字符串表示 | repr(obj) |
__len__ |
长度 | len(obj) |
__getitem__ |
获取元素 | obj[key] |
__setitem__ |
设置元素 | obj[key] = value |
__delitem__ |
删除元素 | del obj[key] |
__iter__ |
迭代 | for x in obj |
__next__ |
下一个元素 | 迭代器 |
__call__ |
调用 | obj() |
__eq__ |
等于比较 | obj1 == obj2 |
__lt__ / __gt__ |
比较 | obj1 < obj2 |
__add__ |
加法 | obj1 + obj2 |
__enter__ / __exit__ |
上下文管理 | with obj |
__slots__ |
限制属性 | 优化内存 |
十五、常见陷阱与注意事项
1. 可变默认参数陷阱
|
|
2. 列表推导式中的闭包陷阱
|
|
3. 浮点数精度问题
|
|
4. 深拷贝 vs 浅拷贝
|
|