Skip to content

Commit f57047f

Browse files
📝 更新Python文档,增强标准库推荐与内容
- 在多个文档中增加了对标准库的详细说明
1 parent 65809f5 commit f57047f

File tree

30 files changed

+324
-194
lines changed

30 files changed

+324
-194
lines changed

docs/docs/选择编程语言/Python/10函数.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ list(map(add, a, b)) # [12, 14, 19]
356356
## 标准库推荐
357357

358358
- functools: 提供高阶函数和装饰器工具,例如 `wraps``lru_cache` 等。
359-
- contextlib: 提供上下文管理器相关工具,如 `contextmanager``nullcontext`
360359
- itertools: 提供迭代器工具(排列组合、无限迭代器等)。
361360
- operator: 提供将运算符函数化的工具,便于与高阶函数搭配使用。
362-
- typing: 提供类型提示支持,让函数签名更清晰。
361+
- typing: 提供类型提示支持,让函数签名更清晰。
362+
- doctest: 支持在文档字符串中编写示例代码,并自动执行这些示例以验证函数行为,非常适合为函数写“可执行文档”和简单测试。

docs/docs/选择编程语言/Python/1变量.mdx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -385,8 +385,5 @@ print(hash(a),hash(b))
385385

386386
## 标准库推荐
387387

388-
- builtins: 内置函数与常用类型的集合,例如 `id``hash` 等。
389-
- keyword: 提供 Python 关键字列表,用于变量命名检查等场景。
390388
- hashlib: 提供多种安全哈希和摘要算法。
391-
- typing: 提供类型提示相关的类与工具,让代码更易于维护。
392-
- pydantic: <Highlight color="g">**第三方**数据验证与设置管理库,常用于配置与数据模型校验。</Highlight>
389+
- secrets: 提供安全随机数和令牌生成。

docs/docs/选择编程语言/Python/20类与对象.mdx

Lines changed: 109 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -587,8 +587,29 @@ graph TD
587587
| **对象** | ✖️ | ✔️ |
588588
| **可迭代对象** | ✔️ | ✖️ |
589589
|**可迭代对象**也是**迭代器** | ✔️ | ✔️ |
590+
591+
迭代器协议是 Python 中的核心概念之一。它定义了对象如何支持迭代操作,使得 for 循环、列表推导式等语法成为可能。迭代器提供了一种惰性求值的方式,节省内存并提高效率。
592+
593+
```python showLineNumbers
594+
# 迭代器使得这些操作成为可能
595+
for item in [1, 2, 3]:
596+
print(item)
597+
598+
# 列表推导式也依赖于迭代器
599+
squares = [x**2 for x in range(10)]
600+
```
601+
602+
[PEP 234 – 迭代器](https://peps.python.org/pep-0234/)
590603
:::
591604

605+
迭代器是一个可以记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有元素被访问完结束。
606+
607+
**迭代器的特点:**
608+
- **单向性**:只能往前不会后退
609+
- **惰性求值**:按需生成数据,节省内存
610+
- **一次性**:耗尽后不能重用,需要重新创建
611+
- **协议支持**:实现了 `__iter__()``__next__()` 方法
612+
592613
```python showLineNumbers
593614
class MyRange:
594615
def __init__(self, start, end):
@@ -626,6 +647,45 @@ __next__
626647
"""
627648
```
628649

650+
```python showLineNumbers
651+
# 字符串、列表、元组都是可迭代对象,可用于创建迭代器
652+
lists = [1, 2, 3, 4]
653+
it = iter(lists) # 创建迭代器对象
654+
655+
print(next(it)) # 1 - 输出迭代器的下一个元素
656+
print(next(it)) # 2 - 再输出下一个元素
657+
print(next(it)) # 3
658+
print(next(it)) # 4
659+
660+
# 耗尽后会抛出 StopIteration 异常
661+
try:
662+
print(next(it))
663+
except StopIteration:
664+
print("迭代器已耗尽")
665+
```
666+
667+
:::tip
668+
for 循环会自动处理 StopIteration 异常,所以我们不需要手动捕获:
669+
```python
670+
lists = [1, 2, 3]
671+
for item in lists: # for 循环内部调用 iter() 和 next()
672+
print(item)
673+
```
674+
:::
675+
676+
:::tip
677+
实际开发中,生成器(generator)通常比自定义迭代器类更简洁。生成器使用 `yield` 关键字。
678+
```python
679+
def countdown(start):
680+
while start > 0:
681+
yield start
682+
start -= 1
683+
684+
for num in countdown(5):
685+
print(num) # 5, 4, 3, 2, 1
686+
```
687+
:::
688+
629689

630690
### \_\_enter\_\_\_\_exit\_\_ 与 with 语句
631691

@@ -1493,10 +1553,55 @@ test_vars()
14931553
print("Global vars keys:", list(vars().keys())) # 显示全局变量的键
14941554
```
14951555

1556+
### iter函数
1557+
1558+
`iter()` 函数用于从可迭代对象创建迭代器,或创建一个调用函数直到返回哨兵值的迭代器。调用的是类的`__iter__()`方法。
1559+
1560+
**函数签名:**
1561+
1. `iter(iterable) -> iterator`
1562+
2. `iter(callable, sentinel) -> iterator`
1563+
1564+
```python showLineNumbers
1565+
# 基本用法:从可迭代对象创建迭代器
1566+
numbers = [1, 2, 3, 4, 5]
1567+
it = iter(numbers)
1568+
print(next(it)) # 1
1569+
print(next(it)) # 2
1570+
1571+
# 高级用法:使用哨兵值
1572+
# 读取文件直到空行
1573+
with open('data.txt') as f:
1574+
for line in iter(f.readline, '\n'):
1575+
print(line.strip())
1576+
```
1577+
1578+
### next函数
1579+
1580+
`next()` 函数用于从迭代器获取下一个元素。调用的是类的`__next__()`方法。
14961581

1497-
## 元类编程
1582+
**函数签名:** `next(iterator, default=None) -> value`
1583+
1584+
```python showLineNumbers
1585+
# 基本用法
1586+
numbers = iter([1, 2, 3])
1587+
print(next(numbers)) # 1
1588+
print(next(numbers)) # 2
1589+
print(next(numbers)) # 3
1590+
1591+
# 使用默认值避免 StopIteration 异常
1592+
print(next(numbers, 'No more items')) # No more items
1593+
1594+
# 不使用默认值会抛出异常
1595+
try:
1596+
numbers2 = iter([1, 2])
1597+
next(numbers2)
1598+
next(numbers2)
1599+
next(numbers2) # 抛出 StopIteration
1600+
except StopIteration:
1601+
print("迭代器已耗尽")
1602+
```
14981603

1499-
### object
1604+
### object函数
15001605

15011606
`object` 是 Python 中所有类的最终基类。在 Python 3 中,即使没有显式继承,所有类都会自动继承自 `object`。<Highlight>object 自己没有基类,它是根基类。</Highlight>
15021607

@@ -1549,5 +1654,6 @@ print(MyMetaClass.class_id) # MyMetaClass_ID
15491654

15501655
## 标准库推荐
15511656

1657+
- abc: 提供抽象基类支持,用于定义接口与抽象方法。
15521658
- dataclasses: 通过装饰器自动生成 `__init__``__repr__` 等方法,简化数据类定义。
1553-
- abc: 提供抽象基类支持,用于定义接口与抽象方法
1659+
- contextlib: 提供上下文管理器相关工具,如 `contextmanager``nullcontext`

docs/docs/选择编程语言/Python/25迭代器.mdx

Lines changed: 0 additions & 120 deletions
This file was deleted.

docs/docs/选择编程语言/Python/28装饰器与作用域.mdx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,3 +457,9 @@ globals()["a"] = 99
457457
print("a =", a) # 99
458458
```
459459

460+
## 标准库推荐
461+
462+
- builtins: 内置函数与常用类型的集合,例如 `id``hash` 等。
463+
- gc: 控制和调试垃圾回收器(GC),可以查看、调整引用计数与循环引用的回收行为,常用于分析内存泄漏。
464+
- inspect: 提供运行时反射能力,能获取函数签名、源码、调用栈等信息,是调试装饰器、动态生成函数时的利器。
465+
- sys: 暴露解释器级别的接口(如 `sys.modules``sys.path``sys.getsizeof` 等),便于查看模块加载、内存占用与运行环境信息。

0 commit comments

Comments
 (0)