-
本文介绍如何利用Python的Annotated与泛型类型变量(TypeVar)在不改变静态类型推断的前提下,将类型注解用作运行时元数据载体,兼容Pyright、mypy等主流类型检查器。
-
mitmproxy能抓手机HTTPS请求,但需手动安装并信任其证书;需配置手机代理指向PC局域网IP并开放防火墙;支持Python脚本通过钩子修改请求响应;部分App因证书绑定或动态签名无法被正常抓取。
-
Python中创建堆主要用heapq模块实现最小堆,通过列表配合heappush、heappop和heapify操作;构建最大堆需对元素取负值;可封装类简化使用;线程安全场景可用PriorityQueue。
-
after()是延后执行而非定时器,需在回调末尾递归调用self.after(ms,func)实现周期刷新;误用单次调用或while+sleep会导致UI卡死;暂停/重置须用after_cancel()配合ID管理;避免after(0)以防过载;多组件需各自管理job_id并做销毁防护。
-
Flask接收前端分片Blob需用request.files['file'].read()立即读取字节,避免请求体被消耗;分片应追加写入临时文件并记录已接收索引,合并前校验哈希,完成后原子重命名,并定时清理过期.part文件。
-
Python无严格私有成员,单下划线(_name)表受保护约定,双下划线(__name)触发病名改写(_ClassName__name)防子类覆盖,双下划线前后(__name__)为魔法方法;真封装需@property等机制。
-
deque在频繁头部插入时性能优于list:list.insert(0,x)为O(n),deque.appendleft()为O(1);但deque不支持切片且随机访问慢2–3倍。
-
应使用type(obj)isdict严格判断是否为原生dict,因isinstance(obj,dict)会误判defaultdict、OrderedDict等子类,导致json.dumps等操作异常;若只需映射行为,应优先用isinstance(obj,collections.abc.Mapping)。
-
在Django异步视图或Channels消费者中调用hasattr(obj,'field')可能意外抛出KeyError而非预期的False,根本原因在于Django关系字段(如ForeignKey)的描述符在异步环境下无法安全执行同步数据库查询,导致底层缓存访问失败并抛出KeyError,而非标准AttributeError。
-
直接赋值绕过验证因无@property时属性为普通变量;@property提供受控访问,需配套setter实现校验,命名须一致且存储变量用下划线区分,初始化通常绕过setter以避免重复校验。
-
Python自带dict不支持TTL因其纯内存映射,无时间戳、过期检查或自动清理机制;手动维护易致内存泄漏,Timer方案开销大且难管理;推荐懒过期封装方案,读时检查并删除过期项。
-
Python内置函数分五类:基础数据处理(如print、len、type)、对象与属性操作(如dir、hasattr)、迭代与高阶函数(如range、map)、输入输出与调试辅助(如input、help),共约70个,常用20–30个覆盖多数场景。
-
本文介绍一种纯NumPy向量化方法,将源数组Y中每行的非零元素,按顺序填入目标数组X每行最靠前的零值位置,全程避免Python循环,适用于大规模矩阵(如5000×20000)高频操作。
-
match.groups()最适合“不关心分组数量”的场景,它返回包含所有捕获组值的元组,无论组数多少或是否匹配成功,均不会报错,且天然过滤未参与匹配的组。
-
Pandas筛选数据核心是布尔索引,通过条件生成True/False序列来选择行;结合loc、iloc、query()、isin()、between()及.str方法可实现多条件组合与复杂场景筛选,处理缺失值可用isnull()/notna(),配合括号明确优先级,提升代码可读性与效率。