-
大文件分块读取需按需加载数据块以避免内存溢出,分为按字节、按行、结构化格式及自定义上下文保持四类:字节分块用file.read(size)配rb模式;行分块用forlineinf或itertools.islice;CSV/JSONL/Parquet需专用库逻辑分批;跨块记录需buffer缓存并拼接。
-
set是基于哈希表的无序唯一可变容器,要求元素可哈希;list不可哈希故无法入set;tuple可哈希需其元素皆可哈希;去重可转可哈希表示;&与intersection行为一致但后者更灵活;set无索引,pop随机移除元素;遍历时修改会报错;带_update的方法原地修改。
-
Python可扩展系统设计核心是解耦、分层与预留演进空间:通过接口抽象(Protocol/ABC)、依赖注入、按业务域划分服务模块、配置驱动差异化行为,并内置可观测性与降级能力。
-
多线程适用于量化中IO密集型任务,如并发拉行情、批量下单、多账户监控及并行通知;不适用于纯计算类策略,应选multiprocessing或numba;推荐ThreadPoolExecutor,注意线程安全与资源管理。
-
Python3不支持b'%s'%obj这类直接字节串格式化,因其严格区分文本(str)与数据(bytes)。正确做法是先用字符串格式化(如'%s'%obj),再显式编码为bytes(如.encode('utf-8')),必要时配合%a和ASCII转义确保兼容性。
-
functools.wraps是装饰器必备项,否则name和doc等元信息丢失,导致help()、inspect.signature()失效及日志、路由、OpenAPI异常。
-
不会。socket和http.client不支持with语法,因未实现上下文管理协议;urllib.request.urlopen和requests.Session则显式支持,但需注意手动关闭响应体及异常不吞掉。
-
系统可扩展性设计需聚焦瓶颈识别与领域驱动拆分,高可用须落实熔断、超时、兜底等细节,技术选型应权衡维护成本与业务需求,遗留系统演进重灰度过渡而非推倒重来。
-
rope适合安全跨文件重命名,依赖完整项目结构和正确配置;jedi仅定位引用位置,不修改代码且缺乏语义准确性。
-
推荐直接使用asyncio.PriorityQueue实现优先级队列,它是标准库中线程安全、协程友好的内置类,基于heapq自动排序,支持await,优先级数值越小越先执行;避免手动维护排序。
-
Windows下PermissionError[WinError32]本质是文件被独占占用,应先用ProcessExplorer或handle.exe定位占用进程;代码中需确保正确关闭文件,重试仅适用于临时占用且须指数退避;捕获异常应覆盖OSError和PermissionError并校验winerror==32;避免使用文件锁,推荐原子替换(os.replace)方案。
-
pypiserver是最轻量私有PyPI方案,需指定包目录、禁用fallback、配置鉴权与pip源;上传依赖正确wheel命名,排查要点包括trusted-host、缓存、文件名大小写及python_tag兼容性。
-
pytest直接使用原生assert,无需继承TestCase或self.assert*方法;测试函数需以test_开头或_test结尾,assert失败时自动展开变量值并高亮原因。
-
Python中requests设置代理需注意代理类型、格式及报错原因:支持HTTP/HTTPS/SOCKS五种协议,格式为字典;可通过单次传参、Session全局设置或环境变量三种方式配置;需用no_proxy绕过本地地址,验证推荐httpbin.org/ip接口。
-
Python中pickle和json都能实现对象序列化,但适用场景、能力边界和安全特性差异极大,不能简单互换。功能覆盖:pickle支持任意Python对象,json只支持基础数据类型pickle是Python原生序列化协议,能处理函数、类实例、嵌套自定义对象、带循环引用的结构等。例如:序列化一个包含方法、属性和内部状态的类实例(如datetime.datetime.now())保存带有闭包的lambda函数(虽不推荐,但技术上可行)正确处理对象间相