-
Python dataclass 适合声明原始输入字段,再用 __post_init__ 在生成的 __init__ 完成后计算派生字段。本文从 field(init=False) 开始,说明 InitVar、继承、frozen、更新边界和 replace 的正确用法。
-
Python httpx 的关键不是把 AsyncClient 写得更短,而是让同一个客户端覆盖合适的异步生命周期。本文从循环中新建客户端的常见问题出发,说明共享连接池、Limits 参数、并发任务和关闭时机。
-
用 Python asyncio.timeout 为异步操作建立结构化时限,讲清 CancelledError 到 TimeoutError 的转换边界、finally 清理,以及 reschedule 和 timeout_at 的动态期限用法。
-
判断函数是否为 coroutine function,优先使用 inspect.iscoroutinefunction。本文区分 async def 函数、partial 包装、同步函数返回协程、async generator 与已经调用后的 coroutine 对象,避免把函数检查和结果检查混在一起。
-
Python 装饰器把函数包装成 *args、**kwargs 后,inspect.signature 默认会沿着 __wrapped__ 找回原函数签名。本文说明 functools.wraps、follow_wrapped=False 和显式 __signature__ 的关系,并给出用 Signature.parameters 与 bind 做参数适配的写法。
-
多个 asyncio 协程更新同一个计数时,读改写操作可能在 await 处交错,导致结果丢失。本文用 asyncio.Lock 和 async with 把共享更新放进同一临界区,并说明锁的释放、取消、线程同步和长耗时工作边界。
-
Python import 很慢时,应先用 -X importtime 区分模块自身耗时与包含子依赖的累计耗时,再排查模块顶层的文件 I/O、网络连接、插件扫描和重对象构造。本文给出轻量 __init__、函数内 import、按需初始化及复测方法,并说明延迟导入只是转移成本。
-
用批量清单示例说明 os.path.relpath 的路径计算、不检查文件存在的含义、显式 start 和当前目录差别,以及 POSIX、Windows 路径规则和跨驱动器异常。
-
Python 标准库 statistics.quantiles 用 n 把数据划分为等概率区间,并返回 n-1 个分位数切点。本文说明 exclusive 与 inclusive 的选择、四分位数和百分位数的参数设置,以及空数据、样本量和 NaN 边界处理。
-
Python logging 没有配置 handler 时不会简单地丢弃所有高等级日志,而会使用 logging.lastResort 兜底。本文拆解它的触发条件、WARNING 阈值、sys.stderr 输出以及显式 handler 的接管方式。
-
Python 3.14 新增的 compression.zstd 提供 zstd.open 和 ZstdDecompressor。本文按文件和通用输入两种场景说明如何分块读取大压缩流,控制解压输出大小,并处理 EOF、多帧输入、异常和模块缺失。
-
Python asyncio.timeout 会在截止时间到达时取消当前任务,并在上下文管理器退出时把 asyncio.CancelledError 转换为内置 TimeoutError。本文给出最小写法,再说明异常捕获位置、动态截止时间、expired 状态、嵌套超时和 wait_for 的区别。
-
Python str.expandtabs 会按照当前字符列和 tabsize 把制表符展开到下一个制表位。本文用小例子说明默认 8 列、自定义 tabsize、换行重置,以及字符计数和终端显示宽度的区别。
-
Python 3.12 起可以用 sqlite3.Connection.setconfig() 设置布尔型 SQLite DBCONFIG 选项,再用 getconfig() 读取当前连接状态。本文以外键配置为例,说明调用方式、版本与底层 SQLite 能力边界,以及生产初始化策略。
-
str.isidentifier() 只判断字符串是否符合 Python 标识符的词法形态,def 和 class 仍可能返回 True。本文结合 keyword.iskeyword() 说明两层判断的分工,并给出可复用的命名校验函数。