- 博客(419)
- 收藏
- 关注
原创 2025-11-01 Python 标准库 14——pathlib 模块
Python 标准库中的 argparse 是一个命令行解析模块,用于简化参数处理。它提供面向对象的路径抽象,分为纯路径(PurePath)和具体路径(Path)两大类。纯路径仅进行词法运算,而具体路径支持I/O操作。路径类包括 PurePosixPath、PureWindowsPath、PosixPath 和 WindowsPath,分别针对不同操作系统设计。模块支持跨平台路径分析,提供丰富的属性(如 parts、parent、suffix 等)用于路径组件操作,适用于文件系统交互和路径计算需求。
2025-11-01 19:00:00
730
原创 2025-10-16 Python 标准库 13——argparse 模块
Python的argparse模块是标准库中处理命令行参数的首选工具,相比optparse和getopt更简洁高效。它支持位置参数、可选参数和自动生成帮助文档,核心功能包括: 基础使用:通过ArgumentParser创建解析器,parse_args()解析参数 参数配置:支持设置程序名(prog)、自定义用法(usage)和描述文本(description/epilog) 高级特性:可继承父解析器参数(parents)、自定义帮助格式(formatter_class)和参数前缀(prefix_chars)
2025-10-16 02:58:12
588
原创 2025-10-16 Python 标准库 12——logging 模块
本文系统介绍了Python标准库logging模块的核心功能与使用方法。主要内容包括:1)日志基础概念与适用场景,区分print()和日志的不同用途;2)日志级别详解,从DEBUG到CRITICAL五个级别及其适用场景;3)日志记录到文件的方法,包括basicConfig()配置和编码处理;4)日志格式定制,支持自定义消息格式和日期时间显示。文章通过代码示例展示了不同级别的日志记录、文件输出和格式化配置,帮助开发者掌握Python日志系统的规范使用,提升调试和监控能力。
2025-10-16 01:46:48
362
原创 2025-10-10 Python 标准库 11——shutil 模块
Python的shutil模块提供高效的文件与目录操作功能,专注于批量文件拷贝、目录树管理等复杂任务。其核心API包括copyfileobj(文件对象拷贝)、copyfile(路径级文件拷贝)等,支持分块处理、符号链接控制和异常处理(如SpecialFileError和SameFileError)。该模块自Python 2.7起持续优化,新增如快速拷贝系统调用等特性,适用于需要高性能文件操作的场景。
2025-10-10 19:50:41
936
原创 2025-10-10 Python不基础 27——pyi
本文解析了Python开发中PYI文件的作用与使用场景。当IDE无法直接查看某些函数实现时,差异源于这些函数是用C语言编写的扩展模块。PYI文件作为接口声明文件,通过Python语法描述C扩展的类、函数等接口信息,使IDE能提供准确的代码提示和跳转功能。文章详细介绍了为C扩展编写PYI文件的步骤:确定模块命名、放置对应路径、编写接口声明,并展示了最终实现的IDE支持效果。这一机制有效解决了C扩展模块在Python开发中的接口可视化问题。
2025-10-10 04:08:25
730
原创 2025-10-08 Python 标准库 10——内置异常
本文概述了Python内置异常的分类与核心机制。所有异常均继承自BaseException基类,其中用户自定义异常推荐继承Exception类。文章详细介绍了异常的继承关系、捕获规则、关联值访问以及版本差异,并解释了异常上下文管理(__context__、__cause__)和常用方法(add_note()、with_traceback())。此外,重点阐述了BaseException和Exception的作用差异,并列举了其他核心基类(如ArithmeticError、LookupError)的典型应用场
2025-10-08 20:13:16
649
原创 2025-10-08 Python 标准库 9——内置类型:其他
Python 上下文管理器是支持 with 语句的核心机制,通过实现 __enter__() 和 __exit__() 方法来自动管理资源(如文件、锁),确保执行前后进行初始化和清理操作。上下文管理器可手动实现,也可以通过 contextlib.contextmanager 装饰器简化。Python 3.9+ 引入原生类型注解(如 list[int]、dict[str, int])替代 typing 模块,提升代码可读性和静态类型检查能力。常见内置上下文管理器包括文件对象、线程锁等,实现了资源的自动管理。
2025-10-08 20:03:07
900
原创 2025-10-08 Python 标准库 8——内置类型:集合与字典
Python集合类型(set和frozenset)是用于存储唯一、无序元素的容器,支持高效的成员检测、去重和集合运算。set可变,支持增删元素;frozenset不可变,可哈希,可作为字典键。集合通过花括号或set()创建(空集合必须用set()),frozenset只能通过构造器创建。两者都支持成员检测、长度计算和数学集合运算(并、交、差、对称差),可通过方法或运算符实现。集合运算返回新集合,类型与第一个操作数一致。集合还支持子集/超集检测等操作。
2025-10-08 19:52:16
908
原创 2025-10-08 Python 标准库 7——内置类型:二进制序列
摘要: Python提供了bytes和bytearray两种二进制序列类型。bytes为不可变对象,支持字面值(b'...')、构造器(bytes())和十六进制转换(fromhex())创建;核心特性包括序列索引(返回整数)、十六进制输出(hex())和字符串解码(decode())。bytearray为可变版本,仅能通过构造器创建,支持元素修改和动态调整(append/extend),但方法多返回新对象而非原地操作。两者均兼容ASCII操作,非ASCII数据需转义处理,适用于二进制协议和编码转换场景。(
2025-10-08 19:51:21
994
原创 2025-10-08 Python 标准库 6——内置类型:字符串
Python字符串是处理文本数据的核心不可变序列,由Unicode码位构成。创建方式灵活,支持单/双引号(可互相嵌套)、三重引号(多行文本)和隐式拼接。通过str()构造器可转换其他对象为字符串,支持编码转换。字符串提供丰富方法:大小写转换(capitalize/casefold/lower/upper/title)、格式判断(istitle/islower/isupper)等,所有操作均返回新字符串。特别地,casefold()比lower()转换更彻底,适合不区分大小写的匹配场景。
2025-10-08 19:50:44
750
原创 2025-10-08 Python 标准库 5——内置类型:迭代器与序列类型
本文介绍了Python中迭代器和生成器的工作原理及序列类型操作。迭代器通过实现__iter__()和__next__()方法实现元素遍历,而生成器通过yield简化了迭代器创建过程。序列类型(如list、tuple)支持通用操作如成员检测、拼接、切片等。示例代码展示了自定义迭代器实现和生成器应用,以及序列的基本操作方法。这些机制是Python高效处理数据遍历的核心功能。
2025-10-08 19:49:57
1030
原创 2025-10-08 Python 标准库 4——内置类型:数字类型
本文概述了Python的主要内置类型及其特性。主要内容包括:1) 六大类内置类型(数字、序列、映射、类、实例、异常),强调可变多项集(如列表、字典)的原地操作特性;2) 逻辑值检测规则,列出所有内置假值对象;3) 布尔运算(and/or/not)的短路求值机制和运算规则;4) 比较运算符的优先级、串联比较特性及"is"与"=="的区别。文章通过代码示例展示了各类操作的具体行为,特别指出了可变多项集方法返回None、布尔运算返回操作数本身等易错点。
2025-10-08 19:49:20
1010
原创 2025-10-08 Python 标准库 3——内置常量
Python内置常量分为核心常量和交互式专用常量两类。核心常量包括False、True、None、NotImplemented、Ellipsis和__debug__,其中None、False、True和__debug__不可修改。NotImplemented用于特殊方法表示未实现操作,不能与NotImplementedError混淆。交互式常量如quit()、help等由site模块添加,仅适用于解释器环境,不建议在程序中使用。需注意NotImplemented在Python 3.9+中布尔判断将被弃用。
2025-10-08 19:48:40
917
原创 2025-10-08 Python 标准库 2——内置函数(2)
本文介绍了Python标准库中常用的数值计算与比较内置函数,包括abs()、divmod()、max()、min()、pow()和round()。这些函数分别用于求绝对值、取商和余数、求最大值/最小值、幂运算及四舍五入,支持多种数据类型和参数形式。其中,max()和min()可通过key参数自定义排序规则,pow()支持高效取模运算,round()需注意浮点数精度问题。文章通过代码示例详细说明了各函数的使用方法和注意事项。
2025-10-08 02:05:16
342
原创 2025-10-08 Python 标准库 1——内置函数(1)
Python内置函数是解释器自带的工具集,无需导入即可直接使用。本文分类整理了常用内置函数,重点介绍数据类型转换与创建相关函数: bin():将整数转换为带"0b"前缀的二进制字符串 bool():返回参数的布尔值,遵循真值测试规则 bytearray():创建可变的二进制序列对象,支持多种初始化方式 bytes():创建不可变的二进制序列对象 chr():根据Unicode码位返回对应字符 complex():创建复数对象,支持字符串或数字参数 这些函数是Python编程的基础工具,掌
2025-10-08 02:03:33
395
原创 2025-10-07 Python不基础 19——私有对象
本文介绍了Python中私有变量的实现机制与设计意义。私有变量通过双下划线前缀命名(如__var),触发Name Mangling机制将其编译为_类名__var形式,从而实现外部访问限制。其核心价值在于:1)强化封装性,防止外部误用关键数据;2)避免子类覆盖父类同名成员;3)确保类内方法不被意外重载。虽然Python的私有机制是语法层面的(非强制限制),但遵循这一规范能提升代码健壮性。需注意动态赋值、__dict__操作等场景下私有特性会失效。Python采用"信任开发者"的哲学,单下划
2025-10-07 02:48:48
667
原创 2025-10-07 Python不基础 26——import
本文介绍了Python中模块(Module)与包(Package)的基本概念及导入机制。模块通常对应.py文件,是代码组织的基本单元;包则对应文件夹,支持层级结构。Python导入模块时会依次检查缓存、内置模块,并在sys.path路径中查找文件,生成模块对象。包导入类似但需处理层级结构,init.py文件用于初始化包。文章还详解了import、import...as...和from...import...等语句的用法,以及模块缓存机制和命名空间管理。通过理解这些机制,可以更有效地组织Python代码并进行
2025-10-07 02:46:09
467
原创 2025-10-07 Python不基础 25——变量命名规则
本文介绍了Python变量命名的核心原则与规范。合法变量名需由字母、下划线或数字组成,首字符不能是数字。好的变量名需在内容维度传递有效信息,在形式维度解决多单词拼接问题。Python遵循PEP8规范:常量使用大写+下划线、类名用大驼峰、其他使用小写+下划线。下划线有特殊用法:单下划线作占位符、前置单下划线表示弱私有、前置双下划线表示强私有、前后双下划线为魔术方法。最后强调避免命名冲突,勿覆盖内置函数和模块名。遵循这些规范可提升代码可读性和可维护性。
2025-10-07 02:45:36
364
原创 2025-10-07 Python不基础 24——不可达对象回收
本文介绍了Python的垃圾回收机制,重点讲解了引用计数和循环引用的处理方法。引用计数是基础机制,通过维护对象引用计数器实现自动回收。但对于循环引用的情况,Python引入了GC模块专门处理。GC仅跟踪可能形成循环引用的容器类对象,通过双向链表和分代回收策略高效管理内存。分代回收将对象分为三代,根据存活时间采用不同频率的检查,优化了垃圾回收效率。整体机制实现了简单场景下的高效回收和复杂场景下的内存安全保障。
2025-10-07 02:45:05
452
原创 2025-10-07 Python不基础 23——内存管理
本文深入解析了Python内存管理机制。针对小对象频繁创建的问题,Python设计了block→pool→arena三级结构:block是最小分配单元(8字节倍数),pool管理同尺寸block(4KB),arena整合多个pool(256KB)。这种分层管理通过预分配大内存再拆分使用,有效减少了系统调用和内存碎片。内存分配时,小对象(≤512B)优先从对应尺寸的pool获取空闲block,大对象直接调用系统malloc。释放时,小内存仅标记为空闲供复用,只有当整个arena空闲时才归还系统。这种机制在保证
2025-10-07 02:44:07
316
原创 2025-10-07 Python不基础 22——4种退出方式
本文详细解析了Python中四种进程退出方式的区别与适用场景。核心要点包括:quit()和exit()依赖site模块,仅适用于交互式环境;sys.exit()基于SystemExit异常,适合正式代码;os._exit()直接调用系统接口,强制退出且不可捕获。重点比较了各方法的实现原理、捕获机制和清理行为,并提供了异常处理和避坑指南。建议开发中优先使用sys.exit()以保证兼容性,仅在子进程等特殊场景使用os._exit()。
2025-10-07 02:42:55
910
原创 2025-10-07 Python不基础 21——Type Hint
本文介绍了Python中Type Hint(类型标注)的概念、优势及使用场景。Type Hint通过显式声明变量、函数参数和返回值的预期类型,提升代码可读性、支持静态检查,并增强IDE功能。核心内容包括: 基础语法:变量标注(变量名: 类型)、函数参数与返回值标注,支持内置类型和容器类型(Python 3.9+)。 进阶类型: 多类型(Union/|)与可选类型(Optional) 值限定(Literal) 不可修改类型(Final) 适用场景:适用于大型项目、团队协作和库开发,但不推荐用于小型脚本或原型开
2025-10-07 02:42:06
400
原创 2025-10-07 Python不基础 20——全局变量与自由变量
Python函数对全局变量的操作存在反直觉特性:仅读取时正常,若尝试赋值则会报错。这是由于Python在编译时会根据是否出现赋值操作来判断变量作用域——有赋值即视为局部变量。解决方法包括:1)使用global关键字声明全局变量;2)在嵌套函数中使用nonlocal修改外层变量。值得注意的是,对可变对象的修改(如字典更新)不视为赋值操作。本文通过具体案例解析了这一机制,并对比了global和nonlocal的使用场景及注意事项,帮助开发者理解Python变量作用域的核心规则。
2025-10-07 02:41:09
430
原创 2025-10-07 Python不基础 19——私有对象
本文介绍了Python中私有变量的实现机制与设计意义。通过双下划线前缀命名(如__var)定义私有成员,Python会在编译期进行名称改编(Name Mangling),将其转换为_类名__var形式。这种机制既实现了封装性(防止外部直接访问和继承覆盖问题),又保留了灵活性(可通过改编名称强制访问)。文章还指出动态赋值、直接操作__dict__等场景会使私有特性失效,并强调Python的私有机制是"约定大于强制"的设计哲学体现。相比于Java/C++的严格私有,Python更注重开发者自
2025-10-07 02:40:23
696
原创 2025-10-07 Python不基础 18——staticmethod与classmethod
本文介绍了Python中的staticmethod和classmethod两大装饰器,分析了两者的区别与实现原理。staticmethod将函数绑定到类,无需默认参数,既可类调用也可实例调用;classmethod则需cls参数,始终自动传入类对象。两者的底层实现都基于描述器协议,通过__get__方法控制函数绑定行为。staticmethod适合工具类函数,而classmethod适合操作类状态。理解这些机制有助于更好地设计类方法,提升代码封装性。
2025-10-07 02:39:07
435
原创 2025-10-07 Python不基础 17——super()
super 是 Python 的内置类,而非方法或关键字。其完整形式 super(type_arg, obj_or_type_arg) 包含两个关键参数:type_arg 决定 MRO 查找起点,obj_or_type_arg 提供 MRO 链和绑定对象。super() 相比直接调用父类方法更具动态性和灵活性,能自动适应继承关系变化。在多继承场景下,super() 会基于实例的 MRO 链动态查找方法,可能产生非直观的执行结果。super 支持双参数、单参数和无参三种调用形式,分别适用于不同场景。正确理解
2025-10-07 02:37:58
458
原创 2025-10-07 Python uv——新的包管理器
本文介绍了Python包管理工具uv与pip的常用命令对比,包括包安装、升级、版本控制等操作。详细说明了在Windows系统下安装uv的方法,以及如何通过配置环境变量管理Python安装位置。主要内容包括:1) uv与pip命令对照表;2) Windows下uv的安装步骤;3) 通过修改PowerShell配置文件指定Python安装路径;4) 使用uv命令查看和安装特定Python版本。文章为开发者提供了从pip迁移到uv的实用指南,特别适合需要管理多个Python环境的用户。
2025-10-07 01:54:33
867
原创 2025-10-06 Python不基础 16——__slots__
Python的__slots__机制通过预分配内存偏移和描述器直接访问内存,实现属性访问加速和内存优化。核心原理包括:类创建时标准化__slots__为元组并分配内存偏移;实例创建时预留对应内存空间;属性访问时通过描述器直接操作内存地址,比普通属性减少两层查找开销。__slots__实例无__dict__属性,每个属性仅占8字节指针空间,相比普通实例节省字典存储开销。该机制可限制实例属性种类、提升10%访问速度并显著减少内存占用,适用于需要优化性能或限制属性的场景。
2025-10-06 22:12:50
270
原创 2025-10-06 Python不基础 15——metaclass
元类是Python中用于创建类的类,通过继承type并重写__new__和__init__方法来自定义类的创建过程。所有普通类默认由内置元类type创建,而自定义元类可以修改类的生成逻辑,例如在创建时过滤非法属性或添加额外功能。元类的核心在于替换默认的type,实现"类工厂"的效果,属于Python较高级的特性,主要用于框架开发等场景。
2025-10-06 22:10:44
423
原创 2025-10-06 Python不基础12——class原理
摘要:Python类定义底层机制解析 通过字节码分析发现,Python类定义经历了三个关键阶段:1) 类内部代码被编译为code object;2) build_class函数执行该代码生成命名空间;3) 元类type根据命名空间创建类对象。具体流程为:类内部函数与普通函数无异,build_class接收类代码和类名后,先初始化元类(默认type)和命名空间,执行代码填充命名空间,最后调用type完成类创建。type通过__new__分配类骨架(设置__name__、__bases__等核心属性),再通过_
2025-10-06 18:21:23
833
原创 2025-10-06 Python不基础 14——class函数与方法
Python类方法中的self参数通过描述器机制实现自动绑定。方法定义时需声明self,但实例调用时无需传递。其本质是:类属性存储为普通函数,实例访问时触发函数的__get__方法生成绑定方法,将实例作为第一个参数自动传入。动态添加函数时,给类添加会生成绑定方法,而给实例添加则保持普通函数特性。这一机制由Python底层描述器协议实现,实现了面向对象中方法调用的便捷性。
2025-10-06 18:19:56
1039
原创 2025-10-06 Python不基础13——mro
Python中的MRO(方法解析顺序)是多继承机制的核心,用于确定方法/属性的调用优先级。通过单继承、多层继承和多继承案例,展示了MRO如何生成线性查找队列。获取MRO的两种方式为__mro__属性和mro()方法。Python采用C3算法计算MRO,确保满足局部优先顺序、单调性和扩展优先图三大特性,避免继承冲突。C3算法通过严格规则保证继承结构的一致性,使方法查找顺序既符合直觉又无歧义。
2025-10-06 18:18:42
378
原创 2025-10-06 Python不基础 11——if 判断
本文对比了Python中四种if判断形式(is True、== True、直接if和bool())的差异,重点分析了底层实现机制。核心结论:1)is True严格匹配True对象;2)if a和bool(a)本质相同,均调用PyObject_IsTrue函数;3)内置类型真值判定遵循"非零/非空即真"原则;4)自定义类型通过__bool__或__len__方法控制真值判定。建议日常使用直接if a,仅在特殊场景下考虑其他形式。
2025-10-06 18:17:12
1005
原创 2025-10-06 Python不基础 10——闭包
摘要 闭包是Python中让函数能够访问其他函数内部变量的机制。通过分析具体代码案例,揭示了闭包的核心特征:内部函数可以读取并修改外部函数的局部变量,且多次调用共享同一变量。文章澄清了常见的"变量复制"误解,指出闭包通过Cell对象实现变量共享,并详细解析了底层字节码指令(如MAKE_CELL、STORE_DEREF)的工作机制。最后从内存管理角度,解释了闭包变量为何能在外部函数执行结束后依然存活。全文通过代码示例、字节码分析和内存原理三个维度,系统性地阐述了Python闭包的本质与实现
2025-10-06 18:15:58
908
原创 2025-10-06 Python不基础 9——迭代器与生成器
本文介绍了Python中可迭代对象(Iterable)和迭代器(Iterator)的概念及其区别。可迭代对象是能返回自身成员的对象(如list、dict等),而迭代器是表示数据流、支持逐个获取数据的对象。通过魔术方法__iter__()和__next__()实现二者的功能。文章详细解析了for循环的底层执行流程,即自动获取迭代器、循环调用next()并在捕获StopIteration时终止。最后以自定义链表为例,展示了如何实现可迭代对象和对应的迭代器类,使其支持for循环遍历。该机制是Python迭代功能的
2025-10-06 18:14:51
897
原创 2025-10-06 Python不基础 8——魔术方法
摘要:Python 魔术方法是类中特殊命名的方法,如 __init__、__repr__ 等,用于自定义类的行为。核心方法包括: 对象构造:__new__ 负责创建对象,__init__ 负责初始化,__del__ 在对象销毁时执行清理。 字符串表示:__str__ 提供用户友好输出,__repr__ 提供调试信息,__format__ 支持自定义格式化。 关键区别:__new__ 必须返回实例,__init__ 无返回值;__str__ 优先用于 print(),未定义时回退到 __repr__。 这些方
2025-10-06 18:13:39
769
原创 2025-10-03 Python不基础 7——装饰器
本文介绍了Python装饰器的核心概念与实现原理。首先阐述了函数作为对象的本质,指出函数名是变量,函数可作为参数传递或返回值返回。接着通过闭包概念引出装饰器的定义——接收函数并返回新函数的工具,用于在不修改原代码的情况下扩展功能。重点讲解了@语法糖的等价形式(func = decorator(func)),并通过计时器示例展示了基础装饰器和带参装饰器的实现方法,强调使用*args和**kwargs保证通用性。最后演示了多层嵌套实现带参装饰器的技巧,揭示了装饰器链式调用的底层逻辑。
2025-10-03 16:34:12
819
原创 2025-10-03 Python不基础 6——描述器
本文介绍了Python中的描述器(Descriptor)机制。描述器是实现__get__、set__或__delete__方法之一的类,当其实例作为另一个类的类属性时,可以拦截属性访问操作。文章通过示例展示了描述器的基本用法和特殊现象,如实例属性与描述器的优先级问题,并详细解释了Python属性查找的底层逻辑:数据描述器(实现__get__和__set)优先级最高,实例属性次之,非数据描述器(仅实现__get__)最低。最后指出描述器是Python诸多核心功能(如方法调用、property装饰器等)的实现基
2025-10-03 16:30:54
848
原创 2025-10-03 Python不基础 5——GIL
本文探讨了Python中的全局解释器锁(GIL)机制。首先介绍了线程和进程的基本概念,以及多线程环境下可能出现的"竞争冒险"问题。随后解释了Python通过引用计数实现的内存管理机制及其在多线程中的问题。GIL作为解决方案应运而生,它通过全局锁确保同一时间只有一个线程执行Python字节码,简化了设计但限制了多核并行计算。文章分析了GIL的优缺点,并提出了三种绕开GIL限制的方法:多进程处理、使用C扩展和使用无GIL的Python解释器。最终指出尽管GIL存在局限性,Python仍通过多
2025-10-03 16:29:39
925
原创 2025-10-01 Python不基础 4——加法的底层逻辑
Python加法操作比C语言慢的主要原因在于动态类型检查和对象模型的开销。当执行BINARY_ADD字节码时,Python虚拟机需要从栈中取出操作数,进行类型检查和方法分发,最终调用特定类型的加法函数。对于整数运算,Python使用PyLongObject结构体存储任意大小的整数,并通过long_add实现C语言层面的加法。计算结果需要重新封装为Python对象,若超出缓存的小整数范围还需进行内存分配。这些动态类型检查、方法分发和对象创建过程,导致Python加法比C语言原生加法慢得多。
2025-10-01 02:54:46
290
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅