Skip to content

Commit d01d406

Browse files
📝 更新Python文档,优化函数说明与结构
- 在多个文档中调整了函数标题,统一格式,例如将“help() 函数”改为“help函数”。 - 新增了对`locals()`和`globals()`函数的详细说明,增强了对Python命名空间的理解。 - 删除了冗余的内容,简化了文档,确保信息更加清晰易懂。 - 更新了异步编程相关内容,增加了`aiter()`和`anext()`函数的介绍,提升了文档的实用性。
1 parent 3197fbb commit d01d406

File tree

11 files changed

+199
-167
lines changed

11 files changed

+199
-167
lines changed

docs/docs/选择编程语言/Python/0基础语法.mdx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,7 @@ print(keyword.kwlist)
406406
## Python内置函数
407407
408408
### 基本操作
409+
- help(): 显示帮助信息
409410
- input(): 用户输入
410411
- print(): 输出
411412
- hash(): 哈希值
@@ -502,9 +503,6 @@ print(keyword.kwlist)
502503
### 模块操作
503504
- __ import __(): 动态导入模块
504505
505-
### 其他
506-
- help(): 显示帮助信息
507-
508506
`} />
509507

510508

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ print(fact(5)) # 120
316316

317317
## 内置函数
318318

319-
### map 函数
319+
### map函数
320320

321321
map() 对序列每个元素应用函数,返回映射结果。
322322

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ for num in countdown(5):
7171

7272
Python 提供了多个处理迭代器的内置函数,这些函数让迭代操作更加便捷和强大。
7373

74-
### iter 函数
74+
### iter函数
7575

7676
`iter()` 函数用于从可迭代对象创建迭代器,或创建一个调用函数直到返回哨兵值的迭代器。
7777

@@ -93,7 +93,7 @@ with open('data.txt') as f:
9393
print(line.strip())
9494
```
9595

96-
### next 函数
96+
### next函数
9797

9898
`next()` 函数用于从迭代器获取下一个元素。
9999

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

Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -319,19 +319,6 @@ print("函数外的z",z)
319319
# 函数外的z 30
320320
```
321321

322-
### locals
323-
324-
locals 函数返回当前作用域的局部变量的字典。
325-
326-
```python showLineNumbers
327-
def test():
328-
x = 1
329-
print(locals())
330-
test()
331-
# {'x': 1}
332-
```
333-
334-
335322
### nonlocal
336323

337324
当一个函数或类的定义嵌套(被包围)在其他函数的定义中时,其非局部作用域就是<Highlight>包围它的函数的局部作用域</Highlight> 。
@@ -417,3 +404,56 @@ print(func()()) # 2
417404
"""
418405

419406
```
407+
408+
## 内置函数
409+
410+
### locals函数、globals函数
411+
412+
`locals()``globals()` 都是用来**查看当前命名空间中的变量**的内置函数,本质上都是**返回一个字典对象**
413+
414+
- **locals()**:返回当前局部作用域中的变量字典
415+
- **globals()**:返回当前全局作用域(模块级别)中的变量字典
416+
417+
两者都**不需要参数**
418+
419+
- 函数签名:`locals() -> dict`
420+
- 函数签名:`globals() -> dict`
421+
422+
```python showLineNumbers
423+
x = 10
424+
425+
def func(y):
426+
z = 20
427+
print("函数内部 locals():")
428+
print(locals()) # {'y': 5, 'z': 20}
429+
print("函数内部 globals() 是否包含 x? ->", "x" in globals()) # True
430+
431+
func(5)
432+
433+
print("模块级别 globals() 中的部分键:")
434+
print(list(globals().keys())[:8]) # 只看前几个键
435+
```
436+
437+
> 一般来说:
438+
>
439+
> -**函数内部**`locals()` 反映的是当前函数的局部变量,`globals()` 反映的是整个模块的全局变量;
440+
> -**模块顶层**(不在函数里):`locals()``globals()` 返回的其实是同一个字典(都是全局命名空间)。
441+
442+
`locals()` 返回的字典在函数内部通常是**只读视图**,直接修改其返回值,不一定会真正改变局部变量;而通过 `globals()` 返回的字典修改全局变量,一般是有效的:
443+
444+
```python showLineNumbers
445+
a = 1
446+
447+
def demo():
448+
b = 2
449+
# 尝试修改局部变量
450+
locals()["b"] = 100
451+
print("b =", b) # 仍然是 2,大多数实现中修改无效
452+
453+
demo()
454+
455+
# 通过 globals() 修改全局变量
456+
globals()["a"] = 99
457+
print("a =", a) # 99
458+
```
459+

docs/docs/选择编程语言/Python/29文件操作.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,9 @@ finally:
158158
fp.close()
159159
```
160160

161+
## 内置函数
161162

162-
## memoryview 函数
163+
### memoryview函数
163164

164165
`memoryview` 函数主要用于需要高性能和低内存开销的场景,特别是在处理大型二进制数据时。它提供了一个“视图”来直接、高效地访问和操作底层对象的内存,而不需要为数据创建昂贵的副本。
165166

docs/docs/选择编程语言/Python/2字符串.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ s = s.getvalue()
111111
```
112112
:::
113113

114-
### str 函数
114+
### str函数
115115
str() 函数用于将其他类型的数据转换为字符串类型。这在需要将数字、列表或其他对象作为字符串处理时非常有用。
116116

117117
str 函数签名:`str(object='') -> str`

docs/docs/选择编程语言/Python/30异步编程.mdx

Lines changed: 1 addition & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ asyncio.run(main())
163163

164164
## 内置函数
165165

166-
### aiter 函数和 anext 函数
166+
### aiter函数、anext函数
167167

168168
`aiter()``anext()` 是异步版本的 `iter()``next()`,用于处理异步迭代器。
169169

@@ -306,135 +306,3 @@ async def process_stream():
306306

307307
asyncio.run(process_stream())
308308
```
309-
310-
311-
312-
## asyncio
313-
314-
### asyncio 常用函数
315-
316-
虽然 asyncio 是标准库,但这里列出一些常用函数:
317-
318-
```python showLineNumbers
319-
import asyncio
320-
321-
async def demo_asyncio_functions():
322-
# 1. asyncio.sleep() - 异步睡眠
323-
await asyncio.sleep(1)
324-
325-
# 2. asyncio.wait_for() - 设置超时
326-
try:
327-
result = await asyncio.wait_for(
328-
asyncio.sleep(5),
329-
timeout=2.0
330-
)
331-
except asyncio.TimeoutError:
332-
print("操作超时")
333-
334-
# 3. asyncio.as_completed() - 按完成顺序获取结果
335-
tasks = [
336-
asyncio.create_task(asyncio.sleep(2, result="慢任务")),
337-
asyncio.create_task(asyncio.sleep(1, result="快任务"))
338-
]
339-
for coro in asyncio.as_completed(tasks):
340-
result = await coro
341-
print(f"完成: {result}")
342-
# 输出顺序: 快任务, 慢任务
343-
344-
asyncio.run(demo_asyncio_functions())
345-
```
346-
347-
### asyncio.gather()
348-
349-
使用 `asyncio.gather()``asyncio.create_task()` 可以并发执行多个协程。
350-
351-
函数签名:
352-
- `asyncio.gather(*coros_or_futures, loop=None, return_exceptions=False) -> List[Any]`
353-
354-
参数说明:
355-
- `*coros_or_futures`:协程或 future 对象
356-
- `loop=None`:事件循环,默认使用当前事件循环
357-
- `return_exceptions=False`:是否返回异常,默认不返回
358-
359-
返回值说明:
360-
- 返回结果为列表,列表中包含所有协程或 future 对象的返回结果
361-
- 如果`return_exceptions=True`,则返回结果为列表,列表中包含所有协程或 future 对象的返回结果,包括异常
362-
363-
```python showLineNumbers
364-
import asyncio
365-
import time
366-
367-
async def task(name, duration):
368-
"""模拟一个异步任务"""
369-
print(f"任务 {name} 开始")
370-
await asyncio.sleep(duration)
371-
print(f"任务 {name} 完成")
372-
return f"结果-{name}"
373-
374-
async def main():
375-
# 方法1: 使用 gather 并发执行
376-
start = time.time()
377-
results = await asyncio.gather(
378-
task("A", 2),
379-
task("B", 1),
380-
task("C", 3)
381-
)
382-
print(f"结果: {results}")
383-
print(f"总耗时: {time.time() - start:.2f}")
384-
# 总耗时约3秒(最长任务的时间),而非6秒
385-
386-
asyncio.run(main())
387-
# 输出:
388-
# 任务 A 开始
389-
# 任务 B 开始
390-
# 任务 C 开始
391-
# 任务 B 完成
392-
# 任务 A 完成
393-
# 任务 C 完成
394-
# 结果: ['结果-A', '结果-B', '结果-C']
395-
# 总耗时: 3.00秒
396-
```
397-
### asyncio.create_task()
398-
399-
使用 `asyncio.gather()``asyncio.create_task()` 可以并发执行多个协程。
400-
401-
函数签名:
402-
- `asyncio.create_task(coro, *, name=None)`
403-
404-
参数说明:
405-
- `coro`:协程对象
406-
- `name=None`:任务名称,默认不设置
407-
408-
返回值说明:
409-
- 返回结果为任务对象
410-
411-
412-
```python showLineNumbers
413-
import asyncio
414-
import time
415-
416-
async def task(name, duration):
417-
"""模拟一个异步任务"""
418-
print(f"任务 {name} 开始")
419-
await asyncio.sleep(duration)
420-
print(f"任务 {name} 完成")
421-
return f"结果-{name}"
422-
423-
async def main2():
424-
start = time.time()
425-
426-
# 创建任务,立即开始执行
427-
task1 = asyncio.create_task(task("X", 2))
428-
task2 = asyncio.create_task(task("Y", 1))
429-
task3 = asyncio.create_task(task("Z", 3))
430-
431-
# 等待所有任务完成
432-
result1 = await task1
433-
result2 = await task2
434-
result3 = await task3
435-
436-
print(f"结果: {result1}, {result2}, {result3}")
437-
print(f"总耗时: {time.time() - start:.2f}")
438-
439-
asyncio.run(main2())
440-
```

docs/docs/选择编程语言/Python/39模块.mdx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -703,9 +703,7 @@ python+c/c++混合编程如:
703703
704704
但不论是哪个方法,大致的流程都是:转换数据类型->编译代码->生成编译后的文件(.pyd .pyc .pyo .so .dll 等)
705705
706-
707-
708-
### 代码编写
706+
### 代码示例
709707
710708
一个求某个数可以分解为多少个质数之和代码,其中最核心的代码是判断一个数是否为质数。我们使用C语言实现这个被频繁调用的功能。
711709

docs/docs/选择编程语言/Python/3序列.mdx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ result = [x**2 for x in range(10) if x % 2 == 0]
4949
- copy: 返回列表的浅拷贝
5050
`} />
5151

52-
### list() 函数
52+
### list函数
5353

5454
`list()` 函数用于创建一个新的列表,或者将一个可迭代对象转换为列表。
5555

@@ -476,7 +476,7 @@ squares = {x: x**2 for x in range(5)}
476476
- fromkeys: 用指定的键和值创建一个新字典
477477
`} />
478478

479-
### dict() 函数
479+
### dict函数
480480

481481
`dict()` 函数用于创建一个新的字典。
482482

@@ -916,7 +916,7 @@ squares = {x**2 for x in range(5)}
916916
`} />
917917

918918

919-
### frozenset() 函数
919+
### frozenset函数
920920

921921
`frozenset``set` 的不可变版本。一旦创建,`frozenset` 的元素就不能被修改。这使得 `frozenset` 可以作为字典的键或集合中的元素。
922922

@@ -948,7 +948,7 @@ print(frozen.difference(other_set)) # frozenset({1, 2, 3})
948948
由于 `frozenset` 是不可变的,它不支持 `add`, `remove`, `pop`, `update` 等会修改集合内容的方法。
949949
:::
950950

951-
### set() 函数
951+
### set函数
952952

953953
`set()` 函数用于创建一个新的集合。
954954

@@ -1232,7 +1232,7 @@ result = func(**kwargs) # 等同于 func(a=1, b=2, c=3)
12321232
- index: 返回元素首次出现的索引
12331233
`} />
12341234

1235-
### tuple() 函数
1235+
### tuple函数
12361236

12371237
`tuple()` 函数用于创建一个新的元组。
12381238

@@ -1507,7 +1507,7 @@ print(b) # <list_reverseiterator object at 0x...>
15071507
print(list(b)) # [3, 2, 1]
15081508
```
15091509

1510-
### filter 函数
1510+
### filter函数
15111511

15121512
filter 函数用于过滤序列,返回一个迭代器对象。
15131513

0 commit comments

Comments
 (0)