-
gc.collect()并不总是立即释放内存,其效果取决于对象可达性、循环引用、分代回收机制、__del__方法行为及系统资源管理。
-
不同系统换行符差异为:Windows用'\r\n',Unix/Linux/macOS用'\n';Python读取时自动转为'\n',写入时按系统转换,可通过newline参数控制,建议跨平台开发时显式指定newline='\n'以保持一致。
-
LEGB规则指Python按局部(L)、外层函数(E)、全局(G)、内置(B)顺序查找变量,如函数中先查局部变量,再向外逐层查找,直到内置作用域。
-
死锁是多线程竞争资源时因循环等待导致程序卡住的现象,如线程A持lock1等lock2、B持lock2等lock1;避免方法是统一加锁顺序并使用RLock支持同线程重复加锁,防止自我阻塞。
-
多层装饰器定义时从下到上包装,调用时从上到下执行;如@A@B@C修饰函数,定义阶段C先包B再包A,调用时A先执行再B后C,返回时逆序。
-
tcp_mem三元组以页为单位,分别表示低水位、压力模式起始点和高水位;超过第三值将触发OOMkiller。其实际阈值需结合页大小(通常4KB)与内存总量计算,且必须与tcp_rmem/tcp_wmem等参数协同调整才能有效提升吞吐。
-
答案:通过切片、索引或列表推导式可处理列表部分元素。示例:lst[:3]提取前3个元素;lst[1:5]取第2至第5个;lst[::2]隔一个取一个;lst2:6反转部分;可通过索引修改特定位置;结合循环处理多个指定索引;使用列表推导式按条件操作,如[x*2ifi<4elsexfori,xinenumerate(lst)]将前4个元素翻倍。
-
Python文件系统遍历性能优化核心是减少系统调用:优先用os.scandir()替代os.listdir(),利用DirEntry复用内核缓存信息;Python3.12+推荐Path.walk();按需调用entry.stat(),避免重复解析路径和无谓stat();善用glob.iglob等惰性接口。
-
继承Thread类适合封装复杂逻辑,重写run()方法实现任务;2.传入target函数更简洁,适用于简单任务。根据需求选择:简单任务用target方式,复杂状态管理用继承方式。
-
Python并发压测核心是模拟真实请求节奏,需先分析业务场景,选用Locust等合适工具,关注95%响应时间、错误率、I/O阻塞、文件描述符、数据库连接等5大指标,通过渐进式多轮测试确定系统容量水位。
-
本文对比Python中字典的两种常见初始化方式——逐键赋值与字面量声明,分析其在可读性、性能、可维护性及工具兼容性上的差异,并推荐符合PEP8与工程实践的结构化写法。
-
Python自动生成数据报告需三步联动:用pandas+openpyxl生成带样式的Excel(支持合并单元格、图表、自动列宽),用Jinja2+WeasyPrint/pdfkit将HTML模板转PDF(注意中文字体与编码),最后封装双格式导出函数并统一命名、校验文件。
-
Python字符串切片基于Unicode码点而非字节,含中文、emoji或组合字符时结果可能与直觉不符;负索引和step参数需注意边界与方向;应先逻辑切片再编码,避免字节截断;len()返回码点数,切片越界不报错但单索引会。
-
Python3不支持b'%s'%obj这类直接字节串格式化,因其严格区分文本(str)与数据(bytes)。正确做法是先用字符串格式化(如'%s'%obj),再显式编码为bytes(如.encode('utf-8')),必要时配合%a和ASCII转义确保兼容性。
-
答案是使用列表推导式、while循环结合str.find或re.finditer可查找字符所有位置:1.列表推导式遍历enumerate获取索引;2.while循环用find持续查找并更新起始位置;3.re.finditer配合正则提取匹配位置,注意特殊字符需转义;4.可封装为函数复用。