首页
文章列表
标签墙
返回找工具啦
Python
共 128 篇文章
Python的元类metaclass与类的动态创建
2026-06-01 22:11:41
Python的元类metaclass与类的动态创建 理解元类:类的“蓝图” 在Python中,我们日常接触的对象(Object)都是由类(Class)创建的。例如,int、str 这些内置类,以及我们自定义的 class MyClass: ...。但一个关键点是:在Python中,类本身也是对象。
Python
元类
动态创建类
29
0
Python的descriptor协议与@property底层实现
2026-05-31 18:22:21
Python的descriptor协议与@property底层实现 Python中的@property装饰器能让我们将方法调用伪装成属性访问,简化接口。但你是否好奇过,这优雅的语法糖背后究竟是如何运作的?答案就隐藏在Python一个强大而底层的机制——descriptor protocol(描述符协
Python
描述符协议
@property
23
0
Python functools.lru_cache的缓存失效策略
2026-05-31 06:23:18
Python functools.lrucache的缓存失效策略 functools.lrucache 是 Python 中一个强大且易于使用的缓存装饰器。它通过“最近最少使用”(Least Recently Used, LRU)算法,自动存储函数的调用结果。当使用相同的参数再次调用时,它会立即返回
Python
functools
lru_cache
44
0
Python __slots__对内存占用的优化原理
2026-05-30 16:22:00
Python slots 对内存占用的优化原理 在创建海量对象(例如百万级实例)时,你可能会发现程序占用的内存超乎预期。这往往是因为Python默认的每个实例都持有一份独立的属性字典。理解并正确使用slots,能帮你节省大量内存,让程序运行得更轻快。 一、 原理:理解默认的属性字典 在标准的Pyth
Python
__slots__
内存优化
39
0
Python typing.Protocol的结构子类型化实践
2026-05-30 04:24:54
Python typing.Protocol的结构子类型化实践 在Python中,传统继承(如class MyListlist)是一种常见的代码复用方式,但它也创建了强耦合。typing.Protocol引入了结构子类型化,允许你定义对象必须具备的“形状”(方法与属性),而无需继承。只要一个对象拥有
Python
typing.Protocol
结构子类型化
38
0
Python functools.lru_cache 的缓存淘汰与线程安全隐患分析
2026-05-21 12:15:13
Python functools.lrucache 的缓存淘汰与线程安全隐患分析 functools.lrucache 是 Python 标准库中一个强大的缓存装饰器,它通过“最近最少使用”策略自动管理函数调用的结果缓存。它能显著提升重复计算密集型或I/O密集型任务的性能。然而,其简单的接口背后隐藏
Python
functools
lru_cache
42
0
Python contextlib.suppress 为什么比手动 try-except 忽略异常更Pythonic
2026-05-20 21:19:56
Python contextlib.suppress:为什么比手动 tryexcept 忽略异常更 Pythonic 在编写 Python 代码时,我们有时会遇到一些预期之中、但希望程序“吞掉”并继续执行的异常。处理这种情况的传统方式是使用 tryexcept 块,但 Python 标准库提供了 c
Python
contextlib
suppress
62
0
Python weakref 弱引用在缓存与观察者模式中的防泄漏机制
2026-05-20 15:14:22
Python weakref 弱引用在缓存与观察者模式中的防泄漏机制 在Python中,对象的内存管理主要依赖于引用计数。当一个对象的引用计数降为0时,它就会被垃圾回收器(GC)回收。强引用 是导致引用计数增加的常见方式。在某些场景下,比如缓存和观察者模式,我们持有的引用如果阻止了不再需要的对象被回
Python
weakref
弱引用
44
0
Python __init_subclass__ 钩子如何优雅替代元类实现子类约束
2026-05-20 12:24:38
Python initsubclass 钩子如何优雅替代元类实现子类约束 在编写Python类时,你可能需要确保所有子类都遵守特定的规则,比如必须拥有某个属性或必须实现某个方法。传统上,开发者会求助于元类。然而,元类语法复杂、难以理解且容易出错。Python 3.6 引入了一个更优雅、更直接的工具:
Python
__init_subclass__
元类
68
0
Python heapq模块实现优先队列与Top-K问题
2026-05-19 21:13:28
Python heapq模块实现优先队列与TopK问题 在处理数据时,我们常遇到两种典型需求:一是需要一个能自动排序并快速取出最值的数据结构(优先队列);二是从海量数据中快速找出前K大或前K小的元素(TopK问题)。Python内置的heapq模块正是解决这类问题的利器。 本文将用最直接的方式,带你
Python
heapq模块
优先队列
65
0
Python __mro__方法解析顺序在多重继承中的应用
2026-05-19 15:24:19
Python mro方法解析顺序在多重继承中的应用 理解并掌握 Python 的 mro 属性,是解决多重继承中最关键问题(即“钻石问题”)的核心。它直接决定了当你调用一个方法或访问一个属性时,Python 会按照什么顺序在父类中进行查找。这篇指南将手把手教你理解、应用和调试 mro。 第一部分:快
Python
__mro__
方法解析顺序
52
0
Python typing模块常用类型注解的正确写法
2026-05-19 03:17:57
Python typing模块常用类型注解的正确写法 类型注解为Python代码提供了清晰的“路标”,明确指出变量应是什么类型、函数期望接收什么参数以及会返回什么。typing模块是实现这一目标的核心工具。掌握其常用类型的正确写法,能显著提升代码的可读性和可维护性,并为静态类型检查工具(如mypy)
Python
类型注解
typing模块
52
0
Python装饰器为什么会丢失被装饰函数的元信息
2026-05-16 21:20:09
Python装饰器为什么会丢失被装饰函数的元信息 在Python中,函数也是一个对象,它拥有许多元信息,例如函数名 name、文档字符串 doc 等。当你编写一个装饰器来“包装”一个函数时,如果不做特殊处理,这些元信息会被装饰器内部函数的元信息覆盖。 1. 编写一个简单的装饰器来观察问题 创建一个名
Python
装饰器
元信息丢失
47
0
Python weakref.proxy与weakref.ref的区别与使用场景
2026-05-16 18:18:00
Python weakref.proxy与weakref.ref的区别与使用场景 Python 的内存管理依赖引用计数机制。当一个对象的引用计数归零时,垃圾回收器(GC)会将其回收。但在某些场景下,我们需要引用对象却不希望增加其引用计数(例如缓存、观察者模式)。weakref 模块提供了两种主要方式
Python
weakref
内存管理
61
0
Python weakref.finalize在对象销毁时执行清理回调
2026-05-15 06:16:24
Python weakref.finalize在对象销毁时执行清理回调 weakref.finalize 是 Python 标准库中用于注册清理回调的工具。它允许你在对象被垃圾回收时自动执行指定的函数,且不会阻止对象被销毁。相比传统的 del 方法,它更安全、更灵活,能有效避免循环引用导致的内存泄漏
Python
weakref
finalize
61
0
Python协程Asyncio中Task取消信号的传递与处理
2026-05-13 09:19:37
Python协程Asyncio中Task取消信号的传递与处理 在Asyncio编程中,Task(任务)是协程的载体。当需要停止一个正在运行的协程时,就需要用到Task的取消机制。理解并正确处理Task的取消信号,是编写健壮异步程序的关键。 1. 理解Task取消 Task取消不是强制终止,而是向协程
Python
协程
Asyncio
62
0
Python tomllib解析TOML配置文件的标准库支持
2026-05-11 16:49:35
Python 3.11引入了tomllib,一个用于解析TOML配置文件的标准库。这意味着你无需安装任何第三方包即可读取TOML文件。本文将指导你如何使用tomllib来解析TOML文件。 TOML是一种旨在成为最小化配置文件格式的语言。它易于阅读,并且可以无歧义地映射到字典。它常用于项目配置、数据
Python
tomllib
TOML
67
0
Python __subclasses__动态获取类的所有子类
2026-05-11 11:43:21
Python subclasses 动态获取类的所有子类 subclasses 是 Python 的一个内置类方法,允许你在运行时动态地获取一个类的所有直接子类。这个功能在构建可扩展的框架、插件系统或进行调试时非常有用。 什么是 subclasses? subclasses 是一个类方法,调用它会返
Python
类继承
内置方法
79
0
Python sys.setrecursionlimit对递归深度的限制与风险
2026-05-10 03:28:46
Python sys.setrecursionlimit对递归深度的限制与风险 当你在Python中使用递归函数时,可能会遇到一个常见的错误:RecursionError: maximum recursion depth exceeded。这个错误意味着你的递归调用次数超过了Python解释器设定的
Python
递归
递归深度
65
0
Python sys.monitoring低开销代码监控替代sys.settrace
2026-05-10 02:19:46
Python sys.monitoring低开销代码监控替代sys.settrace sys.settrace 是 Python 中用于调试和性能分析的传统方法,但它会显著降低程序执行速度,因为每次函数调用、行执行或异常抛出都会触发回调。Python 3.11 引入了 sys.monitoring
Python
sys监控
低开销
56
0
1
2
3
4
5
6
7
下一页