python教程技术文章
-
用 AsyncGenerator 和 AsyncIterator 区分异步生成器的产出类型、发送类型与协程返回值,说明不能携带 return 值时的替代设计。118 收藏 -
NumPy 数组转换后修改会影响原数据,通常是因为转换结果与输入共享底层内存。本文用 dtype、np.asarray、np.array(copy=True) 和 np.shares_memory 讲清判断方式,并给出可复用的安全转换函数。118 收藏 -
pandas.read_csv 的 chunksize 会返回可迭代的 TextFileReader。本文从 low_memory 的误区出发,演示如何按块筛选、增量聚合和追加写出超大 CSV,并说明 dtype、usecols、坏行与结果内存的边界。117 收藏 -
讲清 Python http.client 中 HTTPResponse 与 HTTPConnection 的关闭责任,给出完整读取、with 语句、异常收口和连接复用的实用模板。116 收藏 -
asyncio.Event 是可复用的状态标志,不是一次性消息队列。本文说明 set、wait、clear 的广播关系,并对比 Queue 与 Condition,帮助你避免清除时机不当造成的等待遗漏。116 收藏 -
Python TaskGroup 用共同作用域管理关联协程,子任务报错后请求取消其余任务并汇总异常。本文给出 Python 3.11 可用最小示例,说明 finally 清理、except* 分类处理和实际并发边界。116 收藏 -
Python 遗留 CLI 的选项变多后,可以用 optparse.OptionGroup 重新组织帮助文本。本文用一个原创示例说明分组创建、注册顺序、归属检查和常见失效原因,同时保留原有参数语义。116 收藏 -
Python 的 csv.DictReader 会把少于表头的行用 restval 填齐,默认值是 None。本文区分缺列、空字段和多余列,并给出 restval、fieldnames 与 restkey 的实用写法。115 收藏 -
用 argparse.ArgumentDefaultsHelpFormatter 让 --help 自动显示参数默认值,解释 formatter_class、default、help、位置参数和 store_true 的边界,并给出可复用的命令行入口示例。115 收藏 -
argparse 默认解析器遇到多个位置参数和选项交错时,参数归属容易让人误判。本文用 parse_intermixed_args 对比普通 parse_args,说明它的工作边界、子解析器限制和互斥组兼容性。114 收藏 -
用 dataclasses.field(default_factory=...) 为每个实例创建独立的列表、字典或集合默认值,避免可变对象共享并保留类型提示。114 收藏 -
Python tomllib 读取 TOML 时要区分 load 与 loads:磁盘文件使用 rb 模式交给 load,内存 bytes 可包装为 BytesIO,字符串才交给 loads。114 收藏 -
Python 的 zipfile.Path 适合在不解压的情况下浏览 ZIP 目录和读取文件,但它不会替调用者清理归档内的路径。本文用目录判断、文件读取和安全落盘三个场景,拆开 Path 的使用边界、路径遍历校验与 ZipFile.extractall 的差异。113 收藏 -
Python typing.Protocol 用结构化子类型表达调用方真正依赖的方法和属性,让未显式继承协议的类也能通过静态类型检查。本文用存储适配器说明 Protocol 的最小接口写法、协议参数、runtime_checkable 的运行时边界,以及 Python 3.12+ 的注意事项。113 收藏 -
用 packaging.SpecifierSet.is_unsatisfiable 在依赖解析前识别确定无解的版本范围,同时说明预发布版本、通配符和完整解析器之间的边界。112 收藏