-
自定义异常类通过继承语言内置异常类,提升代码语义清晰度与可维护性,使错误处理更精准、可预测。在复杂业务场景中,如支付服务或用户注册系统,自定义异常能区分具体错误类型(如InsufficientBalanceException、InvalidUsernameFormatException),避免依赖模糊的通用异常或脆弱的字符串解析。通过建立合理的异常层次结构(如BaseBusinessException派生各类),结合错误码、异常链传递和统一异常处理策略(如全局处理器映射HTTP状态码),可实现精细化错误响
-
pytestfixture需用@pytest.fixture装饰,yield分隔准备与清理,作用域按需设置,依赖通过参数声明,共享需放conftest.py,配置应解耦避免硬编码。
-
选择排序核心是“找最小、换位置”,需用临时变量交换而非仅赋值,避免丢值;内层循环范围应为[i,len(arr)-1],禁用min()和index()以防重复值错误。
-
asyncio.Queue更适合协程因其纯异步设计,所有操作返回awaitable,避免阻塞事件循环;而queue.Queue基于线程锁,在协程中调用会卡死整个循环。
-
全站脱敏显示必须重写Serializer的to_representation方法,而非to_internal_value;需结合模型Meta或显式声明敏感字段,在非DEBUG环境下执行掩码,且嵌套序列化器、SerializerMethodField等各路径均需统一处理。
-
Python异步I/O性能优于线程,因其避免线程切换开销和GIL限制,单线程事件循环调度协程,切换成本纳秒级,且通过epoll/IOCP实现高效I/O等待;但仅适用于I/O密集型场景,且需全链路async支持。
-
闭包是捕获外层变量的嵌套函数,需满足嵌套定义、引用外层局部变量、返回内层函数三条件;装饰器是基于闭包实现的语法糖,用于增强函数功能,常见于缓存、校验、计时等场景。
-
TensorBoard直方图不显示参数需检查:是否在tf.function或record_if(True)内调用、变量是否已初始化、file_writer是否正确激活;PyTorch需用.data取值并移至CPU;直方图挤压因尺度差异,应分层命名并配合标准差监控;日志路径需匹配且至少两步数据才显示标签页。
-
PySide6安装失败或导入报错需确保Python与PySide6版本及架构匹配,优先用pipinstallPySide6;界面卡死须将耗时操作移至QThread或QThreadPool;打包后资源路径应基于sys._MEIPASS动态构建;高DPI适配需手动设置缩放因子与字体策略。
-
设计模式非必需,而是成熟经验总结;小项目优先写清晰可运行代码,中大型项目用模式降低协作成本;Python特性使部分模式简化;应关注代码坏味道而非强行套用模式。
-
del不直接删除对象,而是删除变量对对象的引用;对象是否销毁取决于引用计数是否降为0,降为0时CPython立即回收内存。
-
Python的logging比print更安全,因其分离输出内容与目标、支持分级控制(DEBUG到CRITICAL)、多目标输出(文件/邮件/网络等)、线程安全及格式化上下文(时间、模块、行号、线程ID等),而print仅简单输出至stdout,无级别、无目标控制、非线程安全、格式不统一。
-
STATIC_URL是浏览器请求静态资源的URL前缀(如/static/),STATIC_ROOT是collectstatic命令汇总静态文件的目标物理目录,仅用于生产环境由Web服务器直接服务。
-
U盘运行Python脚本报ModuleNotFoundError是因为U盘路径未加入sys.path,需手动插入;应使用嵌入式Python、--target安装包、动态获取脚本路径避免硬编码盘符。
-
Python自带dict不支持TTL因其纯内存映射,无时间戳、过期检查或自动清理机制;手动维护易致内存泄漏,Timer方案开销大且难管理;推荐懒过期封装方案,读时检查并删除过期项。