自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (7)
  • 收藏
  • 关注

原创 Python中函数参数传递机制是“传值”还是“传引用”?如何解释 mutable和 immutable类型在这方面的差异?

Python的参数传递是​​按对象引用传递​​,实际行为由对象的可变性决定:​​可变对象​​:函数内修改即改原始对象(类似传引用效果)。​​不可变对象​​:函数内修改创建新对象,原始不变(类似传值效果理解这一机制的关键在于:🔑 ​​变量是对象的标签,而非容器;函数传递的是标签的副本,而非对象本身​​。掌握此原理可避免常见陷阱(如默认参数共享、元组内列表修改),并写出更安全高效的代码。id()

2025-08-21 11:52:50 981

原创 使用 functools.cached_property与手工实现缓存属性相比有何优势/注意点?

使用与手工实现缓存属性相比,在代码简洁性、线程安全、维护成本等方面存在显著差异。

2025-08-21 11:45:17 721

原创 CPython解释器中,解释器状态(PyInterpreterState)和线程状态(PyThreadState)的关系是什么?

在CPython解释器中,(解释器状态)和(线程状态)是两个核心数据结构,共同管理Python程序的执行环境与线程调度。

2025-08-21 11:42:20 1069

原创 如何利用 __subclasshook__实现抽象基类(ABC)的灵活子类检查?

validate。

2025-08-21 11:38:35 664

原创 为什么 is比较字符串有时可能返回 False,而 ==却返回 True?

在Python中,is和==的行为差异源于二者本质上的不同:​is==​。这种差异在字符串比较中尤为明显,原因与Python的​​有关。

2025-08-21 11:36:25 290

原创 Python中“进程间通信”(IPC)有哪些常用方法?

Python提供了多种进程间通信(IPC)机制,适用于不同场景的需求。

2025-08-21 11:34:42 840

原创 方法解析顺序(MRO)在多重继承中是如何确定的?

方法解析顺序(Method Resolution Order, MRO)是Python处理多重继承时确定方法调用顺序的核心机制,通过算法实现。

2025-08-21 11:32:42 477

原创 Python的导入机制在导入模块时大致会执行哪些步骤?

Python的导入机制在执行模块导入时遵循一系列标准化的步骤,确保模块的正确加载和初始化。

2025-08-21 11:31:03 391

原创 弱引用(weakref) 解决了什么问题?典型应用场景是什么?

弱引用的本质是​​平衡对象可用性与内存安全​​:​​典型场景​​:缓存、循环引用、事件监听、资源代理。​​核心优势​​:通过“非侵入式引用”避免内存泄漏,提升应用健壮性。​​替代方案​​:若需更强控制(如内存不足时优先回收),可结合软引用(Java)或手动GC策略。通过合理使用弱引用,开发者能在复杂对象关系中实现高效、安全的内存管理。

2025-08-21 11:21:00 811

原创 描述符(descriptor)协议 (__get__, __set__, __delete__) 在底层如何工作?

描述符协议通过拦截底层属性访问(调度),结合数据/非数据描述符的优先级规则,实现对属性行为的精细控制。其核心价值在于​​逻辑复用​​(如 ORM 字段、验证器)和​​性能优化​​(惰性加载),但需注意实例数据存储与内存管理。实际开发中,90% 的需求可通过@property解决,剩余场景(如框架设计)才是描述符的主场。

2025-08-21 11:18:04 680

原创 模式匹配(match-case)在Python哪个版本引入?基本用法?

​​ 正式引入了结构化模式匹配(Structured Pattern Matching)语法match-case,这是Python语言近十年来最重大的语法更新之一。在此之前,开发者通常依赖多层链或字典映射处理多分支逻辑,但这些方式在复杂数据结构匹配时代码会变得冗长且易出错。match-case的加入填补了Python在模式匹配领域的空白,使其更符合现代编程语言特性。版本兼容性提示:最低要求:Python 3.10+推荐版本:Python 3.11+(性能优化更佳)

2025-08-20 14:44:38 788

原创 如何使用装饰器(decorator)给函数添加功能?

装饰器(Decorator)是Python中基于闭包和高阶函数的语法特性,​​。其本质是一个接收函数对象、返回新函数对象的可调用对象,通过@decorator语法糖实现简洁的增强逻辑。

2025-08-20 14:39:51 407

原创 元类(metaclass)的作用是什么?

元类如同 Python 面向对象体系的基因编辑工具,它能重塑类的 DNA 结构。从 ORM 到自动注册系统,从 DSL 构建到协议实现,其价值在于提供更深层次的类构造控制能力。掌握元类,意味着掌握了 Python 类机制的最高级控制权,但这种能力需要匹配真正需要它的复杂场景,方能发挥其最大价值。class。

2025-08-20 14:36:29 432

原创 Python的鸭子类型(Duck Typing)含义是什么?

在静态类型语言中,对象的类型决定了其能力;而在Python的世界里,对象的能力决定了其类型——这就是​​的核心哲学。其名称源自一句谚语:“​​”。在编程语境下,它意味着​​。

2025-08-20 14:33:21 958

原创 如何使用上下文管理器(with语句)管理文件?

在Python开发中,​​是最常见的I/O任务之一。传统的文件处理方式需要开发者手动打开和关闭文件,这种方式不仅代码冗长,而且在异常发生时容易导致​​。本文将深入探讨如何使用和上下文管理器来优雅且安全地管理文件资源。

2025-08-20 14:30:45 938

原创 Python中的GIL(全局解释器锁)主要影响了什么?

全局解释器锁(GIL)是CPython解释器的核心机制,本质上是一个​​,确保在任何时刻仅有一个线程执行Python字节码。其设计源于两个关键需求:​​:Python使用引用计数管理内存,GIL防止多线程同时修改对象的引用计数而导致内存泄漏或错误释放​​:在1991年Python诞生时,多核处理器尚未普及,GIL通过粗粒度锁避免为每个对象单独加锁的性能开销此例中,若无GIL保护,多线程同时修改a的引用计数将引发内存错误。

2025-08-20 14:27:08 618

原创 args和kwargs在函数定义中分别代表什么?

args和**kwargs是Python动态参数处理的基石,其核心价值在于:​​扩展性​​:支持函数接口的无缝扩展​​灵活性​​:适配不同调用场景的参数传递需求​​可维护性​​:通过参数解耦降低代码耦合度在装饰器、类继承、API设计等场景中,合理使用可变参数能显著提升代码的抽象能力和复用性。但同时需警惕过度使用导致的接口不透明问题,在灵活性与可维护性间寻求平衡点。

2025-08-20 14:23:38 990

为什么 is比较字符串有时可能返回 False,而 ==却返回 True?

为什么 is比较字符串有时可能返回 False,而 ==却返回 True?

2025-08-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除