-
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(),配合括号明确优先级,提升代码可读性与效率。
-
Python处理大规模日志需流式读取、预编译正则提取字段、结构化写入CSV或JSONLines、分块输出、加进度提示与断点续跑,确保内存可控、格式一致、鲁棒可维护。
-
必须用fromtkinterimportttk或importtkinter.ttk,不能直接importttk;启用主题需先创建根窗口再调用ttk.Style()并用theme_use()设置,如'vista'或'clam'。