-
MonkeyPatch能改类但不改源码,因Python类对象可变,方法是绑定到类命名空间的函数对象,直接赋值修改类__dict__即可生效,仅对新式类可靠;动态加实例方法须用types.MethodType绑定,否则self不自动传入。
-
Python库默认存放在site-packages目录,路径因环境和系统而异;应使用pip安装而非手动复制文件,开发时推荐pipinstall-e.。
-
dateparser.parse()更适合爬虫时间解析,因其无需预设格式,支持多语言、相对时间推算、时区识别和模糊表达理解,而strptime()需硬编码多种格式且无法处理“昨天”“2小时前”等动态表述。
-
len在Python中是用来计算对象长度的函数。1)对于字符串,len返回字符数量。2)对于列表、元组等,len返回元素数量。3)对于字典,len返回键值对数量。4)自定义类可通过__len__方法支持len函数。
-
面向对象三大特性是继承、封装、多态:继承通过classDog(Animal)复用代码并扩展行为;封装用_和__约定保护成员,辅以getter/setter控制访问;多态通过同名方法不同实现实现解耦,无需类型判断。
-
zscore返回NaN需先检查并过滤NaN/inf,或用nan_policy='omit';阈值3不普适,应结合分布和业务调整;多维数据需区分字段级与样本级检测;pandas计算慢时优先用scipy.stats.zscore。
-
先检查nvidia-smitopo-p2pr输出是否大量显示N/A或PHB而非PIX/SYS,若P2P未通则all_reduce降速3–5倍;确认硬件拓扑、BIOS设置,禁用CUDA_VISIBLE_DEVICES并显式绑定设备,backend必须设为"nccl",再通过nvidia-smidmon-su-d1观察PCIe带宽是否饱和。
-
真正需解决的是工程化落地问题:setup.py与pyproject.toml选型、旧项目迁移字段修改、pipinstall-e.路径异常、poetryCI超时优化、entry_points键名错误等。
-
最稳的分卷压缩方案是调用7z命令,关键参数为-v(如-v50m),需带单位、用绝对路径、全小写文件名,Python中用subprocess传列表而非字符串,zipfile不支持原生分卷。
-
NumPy数组不能直接当字典键,因其可变且无hash值;tobytes()是最稳妥的转换方式,将数组内存布局序列化为不可变bytes,但需注意dtype、连续性及NaN等细节。
-
pytest需在单个测试函数内用threading.Thread启动多线程并发调用被测函数,通过共享可变对象、控制同步时机、捕获子线程异常并join等待,以复现确定性竞态问题。
-
仅配置search_fields不足以提升搜索性能,必须配合数据库索引、字段类型选择和查询逻辑控制,否则万级数据以上会明显变慢甚至超时;其默认慢因是底层使用LIKE模糊匹配,无法利用普通索引,易触发全表扫描。
-
应将重复校验逻辑抽成独立函数(如validate_username),由函数自身抛出异常而非返回布尔值;数据库校验需拆分为格式与唯一性两步;装饰器仅用于参数来源固定的入口,避免过度抽象;Pydantic可轻量用于非FastAPI场景,注意strict模式;测试中复用业务校验函数并封装断言以提升可读性与定位效率。
-
Requests请求超时必须显式设置,否则默认无限等待导致卡死;推荐用元组timeout=(connect,read)如(3,10),并结合urllib3.Retry实现带退避的可控重试。
-
Python字典键必须是可哈希类型,即对象生命周期内哈希值不变且实现__hash__()和__eq__()方法;常见可哈希类型包括int、str、tuple(元素全可哈希)、frozenset、None及合规自定义类;list、dict、set等不可变性或未实现哈希协议的类型不可用作键。