RSS
菜单
社区成员个人主页
阿成员
DEV CN / 成员主页

阿青 · 社区话题账号

查看阿青 · 社区话题账号发布的技术文章、关注圈子与公开讨论。

0技术文章4关注圈子467圈内发布1关注者
COMMUNITY POSTS

交流圈发布内容

作者在不同技术圈子中的观点与讨论

1
# Python

Python 协程是什么?async/await 怎么用?

协程 = 用户态可暂停/恢复的函数(协作式调度,单线程并发)。async def 定义协程函数,await 挂起等待异步操作(IO 等待时让出控制权),由事件循环(asyncio.run、loop.run_until_complete)驱动。async with/async for 支持异步上下文与迭代。对比:线程(抢占式、开销大、GIL)、协程(单线程、无锁、高并发 IO 场景)。Python 3.5+ 语法、3.7+ asyncio…

2
# Python

Python 生成器的 send、yield from 怎么用?

send(value):向生成器内部传值,作为当前 yield 表达式的返回值(须先 next() 启动,或 send(None)),用于生成器与外部双向通信(协程雏形)。throw(type, ...) 向生成器抛异常、close() 终止(触发 GeneratorExit)。yield from iterable:委托迭代——把生成器委托给子迭代器(等价于 for x in sub: yield x),自动处理返回值(yield f…

3
# Python

Python 生成器是什么?yield 怎么工作?

生成器 = 含 yield 的函数(或生成器表达式),调用函数不执行体,返回生成器对象;每次 next()/for 迭代执行到 yield 暂停并返回值,保存状态(局部变量、执行位置),下次从暂停处继续。好处:① 惰性求值、省内存(处理大文件/无限序列);② 保存状态简洁(替代手写迭代器)。应用:逐行读大文件、流水线处理、生成无限斐波那契。函数结束时抛 StopIteration。

4
# Python

Python 迭代器和可迭代对象的区别?

可迭代对象(iterable):实现了 __iter__()(返回迭代器)或 __getitem__(旧式)的对象,可用 for 遍历,如 list/dict/str/文件;迭代器(iterator):实现了 __iter__ 和 __next__()(返回下一个元素,耗尽抛 StopIteration)的对象,一次性的。关系:for x in obj 内部调用 iter(obj) 拿迭代器再不断 next()。自定义迭代器:类实现 _…

6
# Python

Python collections 模块常用类有哪些?

① deque:双端队列,两端 O(1) 增删(替代 list 做队列/栈);② Counter:计数器,most_common、elements、update(词频统计);③ defaultdict:带默认值的 dict(defaultdict(list) 分组);④ OrderedDict:有序字典(3.7+ dict 已有序,用于旧版兼容/移动元素 move_to_end);⑤ namedtuple:具名元组(坐标、记录,_asd…

7
# Python

Python 列表推导式、字典推导式、生成器表达式怎么写?

列表推导式:[expr for x in iterable if cond]——新列表;字典推导式:{k: v for x in iterable if cond};集合推导式:{expr for x in iterable};生成器表达式:(expr for x in iterable)——惰性求值、省内存,配合 sum/max/any 使用。注意:① 推导式变量不泄漏到外层(3.0+ 有自己的作用域);② 嵌套 for 顺序与普通循…

8
# Python

Python 的 sort 和 sorted 区别?怎么多条件排序?

sort():列表原地排序,返回 None(list.sort(key=..., reverse=...));sorted(iterable):返回新排序列表,可用于任意可迭代对象。key 参数:排序依据函数(sorted(items, key=lambda x: x['age']));多条件:key 返回元组(sorted(persons, key=lambda p: (p['age'], p['name'])),先按年龄再按姓名);…

9
# Python

Python 元组 tuple 和列表 list 的区别?

① 可变性:tuple 不可变(内容不可改),list 可变;② 内存/性能:tuple 更小更快(无过度分配);③ 用途:tuple 表示固定结构(坐标、函数多返回值、解包),list 表示同质动态集合;④ tuple 可哈希(元素都可哈希时)可作 dict key,list 不可;⑤ 语法:tuple 用 ()(单元素 (1,) 需逗号),list 用 [];⑥ 注意:tuple 内元素若是可变对象(如 list),其内容仍可修改(…

10
# Python

Python 集合 set 和 frozenset 的区别?

set:可变集合,支持 add/remove/discard/update;frozenset:不可变集合(可哈希,可作 dict key/set 元素)。共同点:① 底层哈希表,元素唯一、无序;② 集合运算:交集 &、并集 |、差集 -、对称差 ^、子集 <=、真子集 <;③ 去重、成员判断 O(1)。注意:set 元素必须可哈希;遍历顺序不保证;frozenset 用于需要不可变集合的场景(如常量集合、作字典键)。