-
Python函数返回多个值本质上是返回一个元组,属语法糖;returna,b等价于return(a,b),调用时通过解包机制实现多变量赋值。
-
Python并发任务拆分与负载均衡的核心是保持工作进程/线程忙碌、减少空等和争抢,关键在于任务粒度适配、执行者能力感知及去中心化调度;应按可并行性而非数量均分任务,I/O密集用线程或异步,CPU密集用多进程,优先采用队列驱动的动态分发与反馈式负载均衡。
-
list不可哈希,因它是可变类型,不满足哈希要求:生命周期内哈希值不变且等值对象哈希值相同;字典key必须可哈希才能正确寻址;常见可哈希类型包括int、str、tuple(元素皆可哈希)、frozenset等;可用tuple(my_list)等方式转换list为可哈希形式。
-
提升正则可读性需用命名组、re.VERBOSE注释模式、逻辑拆分;预编译、分段组合、变量复用、单元测试、文档示例及re.DEBUG调试。
-
应使用ThreadPoolExecutor(max_workers=10–20)控制并发,避免直接创建大量线程;优先选用ipapi.co或ipinfo.io等稳定API并设置timeout和重试;CSV导出采用流式写入并规范编码与空值处理。
-
Python协程由事件循环驱动,通过await挂起与恢复实现协作式多任务;当协程执行await时让出控制权,事件循环调度其他任务运行,确保并发执行不阻塞I/O操作。
-
推荐按环境拆分settings文件:base.py抽公共配置,development.py和production.py各覆差异项;通过DJANGO_SETTINGS_MODULE指定,敏感配置(如SECRET_KEY)必须从环境变量或secretsbackend读取,严禁硬编码。
-
多线程文件读写需注意线程安全与资源管理。1.使用Lock保证写操作原子性,避免多线程同时写同一文件导致数据交错;2.推荐线程写独立临时文件后由主线程合并,或通过Queue集中处理写请求;3.各线程应独立使用withopen()打开关闭文件,防止句柄泄漏;4.GIL在I/O操作中释放,适合I/O密集型任务,CPU密集型应选多进程。正确控制访问方式可确保高效安全。
-
GIL是CPython的全局解释器锁,确保同一时刻仅一个线程执行字节码;源于引用计数内存管理与C扩展兼容需求,虽经多次优化(如3.7时间切片、3.12子解释器),仍限制多核CPU密集型并发,需用multiprocessing、nogil扩展或替代解释器应对。
-
StringIO和BytesIO是内存中的类文件对象,应直接传给json.load()等函数,而非套用open();StringIO处理str,BytesIO处理bytes;注意seek(0)、编码、内存占用及Python2/3兼容性。
-
Python变量是对象引用而非值容器,赋值即绑定引用;不可变对象重新赋值会重绑引用,可变对象原地修改影响所有引用;函数参数为对象引用传递,可变对象修改对外可见;复制需区分浅拷贝与深拷贝。
-
母版控制全局样式但不直接影响幻灯片,修改需操作presentation.slide_master;布局继承母版,新幻灯片才生效;图表须用占位符预设,字体需逐层设置中文字符集。
-
Python函数传递列表时采用“按对象引用传递”,函数内修改列表会影响原始数据,因列表是可变对象。例如,调用process_list(my_list)并执行append()或修改元素,会直接改变外部的my_list。但若在函数内将参数重新赋值(如a_list=['new']),则后续操作仅作用于新对象,不影响原列表。为避免意外修改,应使用切片[:]、list()或copy.deepcopy()创建副本,尤其当列表嵌套可变对象时需用深拷贝。建议函数优先返回新列表而非修改原列表,以遵循纯函数原则,提升代码可预
-
该用select_related时是查询外键或一对一字段且需避免N+1查询;它通过JOIN一次性获取关联数据,仅适用于正向外键/一对一关系,不支持多对多或反向关系。
-
Python内存碎片主要由CPython两层分配机制导致:小对象用pymalloc易产生内部碎片,大对象依赖系统malloc受底层碎片影响;可通过复用容器、__slots__、join替代+=、生成器、gc调优及替换jemalloc等手段缓解。