- 博客(2688)
- 收藏
- 关注
原创 Python:格式化字符串字面量 f-string
如果类未定义 __str__() 或 __repr__() 方法,f-string 默认使用从 object 继承的 __repr__(),输出的内容可读性差。f-string 支持与 str.format() 类似的格式规范,可控制小数位数、对齐方式、宽度、千位分隔符等。建议为类实现 __str__()(用户友好显示)或 __repr__()(调试友好显示),从而得到更直观的输出。当在 f-string 内部访问字典或字符串时,如果同时使用相同的引号(双引号嵌套双引号),会引发语法错误。
2025-09-08 00:00:45
468
原创 Python 内置函数:hex()
与 bin()、oct() 一起,构成了 Python 的三大数制转换工具,为开发者提供了直观的数制切换方式。十六进制(hexadecimal)广泛应用于底层开发、内存调试、颜色表示等场景。Python 提供了内置函数 hex(),可以将整数转换为十六进制字符串,方便在不同数制之间切换。数据表示:压缩后的数据、加密哈希结果(如 MD5、SHA256 常输出十六进制字符串):必填,必须是整数(int 或实现了 __index__() 的对象)。格式固定为 '0x...' 或 '-0x...'。
2025-09-07 16:58:00
204
原创 Python 内置函数:oct()
虽然在日常开发中不如二进制和十六进制常用,但在文件权限表示、低层数据分析等场景,八进制依旧不可或缺。oct() 是 Python 提供的数制转换函数之一,能将整数转换为标准的八进制字符串。虽然在现代开发中不如 bin() 与 hex() 常用,但在系统权限、底层数据处理等场合,它依旧是一个实用工具。Python 采用 '0o' 表示八进制,避免与数字 0 混淆(早期语言如 C 使用 0 前缀,容易出错)。:必填,必须是整数(int 或实现了 __index__() 的对象)。四、oct() 的特点。
2025-09-07 13:55:00
133
原创 Python 内置函数:bin()
Python 提供了内置函数 bin(),用于将整数转换为二进制字符串,帮助开发者更直观地查看数值的底层表示。调试与学习位运算、格式化输出二进制结果、数据处理与网络协议分析(常涉及二进制表示)、算法与竞赛题中用于二进制分解与位操作,等等。bin() 仅支持整数,若要处理浮点数,需要先转换为整数或使用其他方法(如 struct 模块)。bin(-10) → '-0b1010',采用带符号的字符串,而不是补码形式。返回以 '0b' 开头的字符串,表示整数 x 的二进制形式。四、bin() 的特点。
2025-09-07 07:00:00
237
原创 Python:特殊属性(合集)
这些属性通常以 __name__、__doc__、__dict__ 等形式出现,是自省、调试、反射乃至框架设计的基石。除了大量控制对象行为的“特殊方法”,Python 还提供了一系列特殊属性,用于描述模块、函数、实例和类的元信息。特殊属性描述“对象是什么”,而特殊方法则定义“对象能做什么”。函数对象由 Python 在定义时自动生成,具有描述签名、闭包和代码信息的属性。类本身是 type 的实例,作为“元对象”同样具有大量属性。:函数的代码对象(字节码、变量名等)Python:实例(对象)的特殊属性。
2025-09-07 00:01:08
571
原创 Python 内置函数:round()
round() 是 Python 提供的四舍五入函数,支持整数、浮点数和自定义对象。Python 提供了内置函数 round(),可对浮点数或实现数值接口的对象进行四舍五入,返回整型或指定精度的小数。如果对象实现了 __round__(self, n) 方法,那么在调用 round(obj, n) 时,Python 会自动调用该对象的 __round__ 方法。:可选,指定保留的小数位数(正数表示小数点后位数,负数表示小数点左侧位数)。如果提供 ndigits:返回浮点数,保留指定的小数位数。
2025-09-06 16:58:00
346
原创 Python 内置函数:format()
format() 用于将数值或对象格式化为字符串。它提供了灵活的控制方式,特别适用于数字精度、对齐、千位分隔、百分比等格式化场景。2、若传入的 value 是自定义对象,其 __format__() 方法会被调用。3、format() 不适用于拼接多个变量,它每次只格式化一个值。要被格式化的值,可以是数字、字符串、日期、自定义对象等。:二 / 八 / 十六进制 /十六进制(大写)。格式说明字符串,用于控制输出格式。2、二进制、八进制、十六进制格式。:右对齐,总宽度 10。:宽度 5,前补 0。
2025-09-06 13:58:00
197
原创 Python 内置函数:max() / min()
max() 与 min() 是 Python 中最常用的聚合函数之一,能够快速找出序列中的最大值与最小值。它们既支持直接比较,也支持自定义关键字函数,适用于数字、字符串、字典、对象等多种类型。Python 提供了内置函数 max() 与 min() 来完成这类操作,它们不仅支持对序列直接求值,还能通过关键字参数实现自定义比较方式。sorted(data)[-1] 等价于 max(data)。:可迭代对象(列表、元组、字符串、集合、字典等)。数字、字符串、序列、集合、字典、迭代器、生成器。
2025-09-06 07:00:00
249
原创 小朋友学 Python(13):字典是魔法笔记本!用键值对记录一切!
在编程的世界里,有时我们需要记录一组一组配对的信息,比如一个学生的“姓名+年龄+年级”,或者一个词语的“英文+中文意思”。这时候就轮到我们最聪明的数据结构之一 —— 字典(dictionary) 出场啦!字典就像一本文字魔法笔记本,能够把一个“关键词”(key)和它对应的信息(value)牢牢地绑定在一起,随时查阅,井井有条!(3)使用 .get() 查询某个不存在的宠物,如果没有,返回“暂时没有这只宠物”。有时候我们查找一个键时,万一这个键不存在,程序会出错。三、增加、修改、删除字典内容。
2025-09-06 00:02:21
274
原创 Python 内置函数:reversed()
reversed() 提供了一种通用的反向迭代方式,功能灵活且不会破坏原数据。若需要保留原顺序、节省内存,它优于 list.reverse(),是处理倒序逻辑、翻转文本、逆序迭代的首选工具。reversed() 用于返回一个反向迭代器,从而可以在不改变原对象的情况下反向遍历任何可迭代对象。返回一个迭代器对象,可用于 for 循环或转换为列表、元组等。reversed() 只适用于支持随机访问的可迭代对象,如,一个可反转的序列类型(如:字符串、列表、元组、range)3、反转后转换为数据结构。
2025-09-05 16:58:00
293
原创 Python 内置函数:ascii()
然而,当字符串中含有非 ASCII 字符时,repr() 可能会原样输出这些字符。为了在仅支持 ASCII 的环境中安全显示,Python 提供了内置函数 ascii(),它会将对象的非 ASCII 字符转义为对应的 \x、\u 或 \U 序列。ascii() 是 Python 提供的一个实用函数,它与 repr() 类似,但会确保输出中没有非 ASCII 字符,而是使用转义序列代替。返回对象的字符串表示形式(类似 repr()),但所有非 ASCII 字符会转义。结果只包含 ASCII 范围内的字符。
2025-09-05 14:51:50
376
原创 Python 内置函数:callable()
常见可调用对象包括函数、类、方法以及实现了 __call__ 的实例。4、callable() 只判断对象是否具备调用能力,但并不会实际调用对象本身。3、函数对象(functor)既能保存内部状态,又能像函数一样使用,适合用于回调、懒加载、装饰器等场景。1、类对象总是可调用的,因为调用类时会触发 __new__ 和 __init__ 方法。(4)定义了 __call__ 方法的对象(俗称“可调用对象”)。2、实例对象是否可调用,取决于是否实现了 __call__ 方法。(2)类(调用类会生成实例)。
2025-09-05 13:55:00
272
原创 Python 内置函数:pow()
Python 提供了内置函数 pow(),它既能完成普通的乘方运算,也能在给定模数时高效计算模幂。它不仅支持常规的指数计算,还支持高效的模幂运算,并在 Python 3.8+ 中引入了模逆元计算的特性。当调用 pow(base, exp, mod) 时,底层使用“平方-乘法”(Exponentiation by Squaring),其时间复杂度为 O(log exp),适合处理超大指数。如果提供 mod:返回 (base ** exp) % mod 的结果,计算时采用高效的模幂算法,更高效。
2025-09-05 07:00:00
657
原创 Python:命名约定
Python 官方文档和 PEP 8(Python 官方代码风格指南) 提供了一系列通用规则,同时社区也形成了一些惯例。如 __init__(), __len__(), __str__() 以及 __name__ 等。不要随意使用 Python 保留字或与内置函数重名(如 list, str, id)。合理的命名不仅让代码符合团队规范,还能避免歧义与冲突。不要自定义不在规范内的名字,如 __myfunc__。这种风格称为“大驼峰命名”(PascalCase)。约定俗成表示“内部使用”或“受保护属性”。
2025-09-05 00:00:53
815
原创 Python 内置函数:delattr()
它与 getattr()、setattr()、hasattr() 一起提供了完整的反射功能。delattr() 正是实现这一功能的工具。它与 getattr()、setattr()、hasattr() 一起构成了 Python 的反射机制,使得对对象的操作更加灵活和动态。delattr() 与 getattr()、setattr()、hasattr() 一起构成了 Python 的动态反射机制,可以在运行时灵活地操作对象。如果子类覆盖了父类的属性,delattr() 删除时会遵循正常的属性查找规则。
2025-09-04 16:58:00
251
原创 Python:函数的特殊属性
这些特殊属性揭示了函数的名称、文档、参数默认值、注解、代码对象、闭包环境等,既方便开发者调试,也支撑着 IDE、装饰器、序列化和反射等功能。在 Python 中,函数也是对象(属于 function 类型),它不仅能被调用,还携带丰富的元信息。参数与注解:__defaults__、__kwdefaults__、__annotations__元信息:__name__、__doc__、__module__、__qualname__代码与环境:__code__、__globals__、__closure__
2025-09-04 13:55:00
263
原创 Python:类的特殊属性
想要保留 __dict__,可以在 __slots__ 里显式加 "__dict__"。类对象不仅定义了实例的行为,还携带了大量的特殊属性,用于描述类的名称、继承关系、方法解析顺序、命名空间、类型注解、文档、弱引用支持、slots 限制等。在类中定义了 __slots__ 后,Python 不再为每个实例创建 __dict__,而是只允许实例拥有 __slots__ 指定的那些属性。基本信息:__name__、__qualname__、__module__、__doc__类的基类元组,顺序与定义时一致。
2025-09-04 07:00:00
230
原创 Python:字符串(str)
(str)是 Python 中最常用的不可变有序序列,用于存储和处理文本数据。创建方式:引号、转义字符、原始字符串、str() 转换、字节解码。使用 find() 定位子串,count() 统计出现次数。字符串是不可变、有序的文本容器,支持 Unicode。表示特殊字符,比如换行、制表键、引号本身等。成对的单引号、双引号或三引号都可构成字符串。支持多语言字符,包括中文、emoji 等。典型应用:文本清洗、模板填充、数据解析。常用操作:索引、切片、拼接、成员运算。字符串一旦创建,内部字符不可修改。
2025-09-04 00:01:14
233
原创 Python 内置函数:classmethod()
在 Python 中,类方法(class method)是一种特殊的方法形式,它绑定到类本身而不是类的实例。通过内置函数 classmethod(),我们可以将一个普通函数转换为类方法,使其第一个参数接收类对象(通常命名为 cls),而不是实例对象 self。类方法的第一个参数始终是类对象,适合工厂方法、类级别数据访问和继承扩展。该对象存放在类的字典中时,通过描述符协议访问,会变为绑定类的函数,调用时自动传入 cls。classmethod 绑定类对象,适合需要依赖类本身的逻辑(工厂方法、继承扩展)。
2025-09-03 20:00:00
570
原创 Python 内置函数:getattr()
getattr() 是 Python 提供的动态属性和方法访问工具,等价于点号访问,但更灵活。通过它可以安全地获取对象属性,支持动态字符串属性名,并可结合默认值避免异常。在 Python 中,对象的属性和方法不仅可以通过点号(.)直接访问,还可以在运行时动态获取。它是反射机制的一部分,常常用于框架、插件系统、动态模块加载等场景,让程序具有更强的灵活性。getattr()、setattr()、hasattr()、delattr() 一起构成 Python 对象的反射机制,允许在运行时动态操作对象属性。
2025-09-03 16:58:00
329
原创 Python 内置函数:len()
作为最常用的内置函数之一,len() 背后依赖对象的特殊方法 __len__(),因此也支持用户自定义类型的扩展。注意:对生成器(如 (x for x in range(10)))直接调用 len() 会报错,因为生成器没有 __len__() 方法。len([]) == 0,len("") == 0,len({}) == 0,都表示空容器。对内置容器而言,len() 的时间复杂度是 O(1),因为长度在对象内部保存,不需遍历。len(obj) 的本质调用是 obj.__len__()。
2025-09-03 13:55:00
657
原创 Python 内置函数:staticmethod()
其中,静态方法(static method)既不依赖实例对象 self,也不依赖类对象 cls。通过内置函数 staticmethod(),我们可以把一个普通函数放进类的命名空间中,从而在语义上与类相关联,但逻辑上独立存在。推荐使用 @staticmethod 装饰器,而不是显式调用 staticmethod(),代码更简洁易懂。无论通过类还是实例调用,都只是直接执行函数,不会自动传入 self 或 cls。放置与类逻辑相关,但不依赖实例或类状态的函数(如工具函数、转换函数)。
2025-09-03 10:00:00
706
原创 Python:实例(对象)的特殊属性
不同实例访问到的 __doc__ 都是同一个类文档,而不像 __dict__ 那样是实例独立的。属性存储:obj.__dict__ → 保存实例的动态状态(可能因 __slots__ 缺失)。如果类定义了 __slots__ 且未包含 __weakref__,则实例无法使用弱引用。注意:如果类定义了 __slots__ 且没有包含 __dict__,实例可能没有该属性。换句话说:obj.__doc__ 等价于 obj.__class__.__doc__。保存对象的弱引用信息(如果该对象支持弱引用)。
2025-09-03 07:00:00
348
原创 Python:字符串的进阶技巧
字符串的基础操作包括索引、切片、拼接等,而在更复杂的场景中,我们往往需要借助一些进阶技巧来实现高效的数据处理与文本分析。当需要大规模替换多个字符时,str.maketrans() 与 translate() 是最佳选择。大小写比较时,casefold() 比 lower() 更彻底,适合国际化场景。排序与去重:sorted() 排序,dict.fromkeys() 保序去重。是一种惰性迭代方式,比列表推导更省内存,适合与 join() 等操作搭配。,大规模拼接优先 join() 或 StringIO。
2025-09-03 00:01:01
876
原创 Python 库手册:weakref 弱引用与内存管理
weakref 是 Python 标准库中用于弱引用机制的模块,它允许程序在不增加对象引用计数的前提下访问对象。通过弱引用,开发者可以在不干扰对象生命周期的情况下持有其引用,一旦对象被销毁,弱引用会自动失效。通常,自定义类的实例是可以的,而像 int、list、tuple 等内建类型默认是不支持弱引用的,除非通过 __slots__ 明确声明支持。以普通键关联对象值,值使用弱引用,值对象被销毁时,条目自动移除。常用于对象池或缓存。以对象实例为键的字典,键使用弱引用,当键对象被销毁时,对应条目自动移除。
2025-09-02 20:41:41
320
原创 Python:模块的特殊属性
模块不仅包含用户定义的函数、类和变量,还带有一系列特殊属性,这些属性提供了模块的元信息(metadata),帮助解释器和开发者进行调试、分析和扩展。注意:__builtins__ 在交互环境和脚本中可能指向不同的对象,一般用于调试和理解,而不是常规代码逻辑。导入相关:__package__、__loader__、__spec__、__cached__这是导入系统使用的技术细节,该对象包含模块的名称、所属包、文件位置、加载器等信息。基本信息:__name__、__doc__、__file__
2025-09-02 16:58:00
278
原创 Python 内置函数:property()
property() 是 Python 提供的属性访问控制机制,它将方法转换为属性访问,既能隐藏实现细节,又能增加数据校验和逻辑处理。Python 提供了内置函数 property(),它能将类的方法转换为“属性访问”的形式,从而实现更优雅的封装。在现代 Python 中,通常用 @property 装饰器及其配套的 @<name>.setter、@<name>.deleter 来代替直接调用 property()。它体现了面向对象中的封装思想,把属性保护在内部,仅通过受控接口访问。
2025-09-02 13:55:00
299
原创 Python:名称改写
名称改写的主要作用是:在类定义阶段,Python 会自动将这类名字改写为 _类名__name 的形式,从而避免在继承关系中被子类意外覆盖。(3)类内部写 self.__hidden 时,Python 会自动替换成 _Demo__hidden,所以访问正常。(2)定义时写的是 __private_method,在类字典里变成了 _Demo__private_method。__init__、__len__、__str__ 等属于 Python 的魔术方法,不会触发名称改写。
2025-09-02 11:51:25
694
原创 Python 库手册:io 输入输出模块
它提供了统一的类体系与接口,支持文本和二进制的读取与写入操作,同时封装了内存文件对象(如 StringIO、BytesIO),是构建高级数据流处理系统的基础。模块底层支撑了 Python 内置的 open() 函数,其接口更为通用且面向对象,是现代 Python I/O 系统的核心。2、模块区分了原始流(Raw)、缓冲流(Buffered) 和 文本流(Text),分别适用于不同场景。3、通过 StringIO 与 BytesIO,可在内存中模拟文件读写,常用于测试、缓存、数据转换等。
2025-09-02 07:00:00
558
原创 Python:字符串的常用操作
内置函数与方法:常用 len()、sorted() 以及 strip()、split()、join() 等方法。字符串(str)作为不可变序列,支持索引、切片、拼接、比较、成员运算等多种操作。很多初学者尝试直接修改字符,其实字符串不可变,只能通过拼接、切片等生成新对象。遍历与统计:字符串可迭代,可结合 find()、count() 等方法快速检索。使用字符串方法 find() 定位子串,count() 统计出现次数。索引与切片:通过 [] 和 [:] 访问子串,支持正向、反向和步长。
2025-09-02 00:00:37
569
原创 Python 内置函数:hasattr()
hasattr() 与 getattr()、setattr()、delattr() 一起构成 Python 的反射机制,支持运行时动态操作对象。hasattr(obj, name) 内部会尝试访问 getattr(obj, name),如果成功则返回 True,否则返回 False。hasattr() 提供了一种更安全的方式,用于检测对象是否具有指定属性或方法,这在反射机制、动态编程、框架开发中非常常用。与 getattr()、setattr()、delattr() 结合使用,可以实现灵活的动态属性操作。
2025-09-01 16:58:00
337
原创 Python:字符串的创建
字符串(str)是 Python 中最常用的不可变序列,主要用于存储和处理文本数据。它可以包含字母、数字、符号、空格、甚至是转义字符。常见创建方式:引号、转义字符、原始字符串、三引号、str() 构造、字节解码。拼接时应避免 +=,推荐使用 join()。用于在字符串中插入特殊字符,如换行、制表符、引号本身等。字符串是不可变、有序的序列,可以包含任意字符。拼接字符串效率低,因为每次都会创建新对象。encode() 可以把字符串转成字节串。一、创建字符串的常见方式。二、创建字符串的常见误区。
2025-09-01 13:55:00
280
原创 Python 内置函数:isinstance()
isinstance() 用于检查一个对象是否是某个类或其子类的实例。它支持类型继承判断,并且可以一次性检测多个类型,是类型检查与条件分支中常用的工具。3、如果需要判断类本身的继承关系,请使用 issubclass() 而不是 isinstance()。type() 严格匹配对象的确切类型,不考虑继承。2、检测内置类型时,可以直接传入内置类型(如 int、str、list)。1、classinfo 必须是类、类型或类型元组,不能是其他对象。单个类、类型,或由多个类/类型组成的元组。
2025-09-01 07:00:00
398
原创 Python:函数注解
函数注解在 Python 中并不是“强制类型”的工具,而是一种增强代码语义的说明机制。在大型项目中,合理地使用函数注解配合工具链,可以有效提高代码质量、可读性和开发效率。它允许在函数的参数和返回值中添加类型提示或说明信息,以增强代码的可读性、可维护性和开发效率。Callable 的格式为:Callable[[参数类型...], 返回类型]注解中的字符串、对象仅作为元信息标签,本身不会被解释器执行类型检查。Python 是动态类型语言,函数注解不会改变运行时行为,泛型使函数/类更通用,适用于多种类型。
2025-09-01 00:01:42
1141
原创 Python 内置函数:setattr()
setattr() 是 Python 用于动态设置对象属性和方法的内置函数。它不仅可以添加新属性,也可以修改已有属性,还能动态绑定方法。在反射、配置管理和框架开发中,setattr() 提供了强大的灵活性,是 Python 动态特性的重要体现。setattr() 与 getattr()、hasattr()、delattr() 一起构成了 Python 的反射机制。setattr() 就是用于动态设置对象属性和方法的工具。在 Python 中,对象的属性既可以直接通过点号赋值,也可以在运行时动态添加或修改。
2025-08-31 16:58:00
392
原创 Python 第三方库:Sphinx(自动文档生成工具)
这是最核心的自动文档扩展,可从 Python 源码中提取类、函数、方法、模块的 docstring,并生成 API 文档。Sphinx 是 Python 生态中最流行的文档生成工具,最初为 Python 官方文档而开发,现已广泛用于自动生成各类项目文档,包括 Python 库、API、教程、开发手册等。允许跨项目引用外部文档,如 Python 官方文档、NumPy、Django 等,只需配置对应的 mapping,即可用 :ref: 或 :doc: 引用其他文档链接。
2025-08-31 13:55:00
508
原创 Python 第三方库:pdoc(轻量级文档生成工具)
pdoc 是一个简洁高效的 Python 自动文档生成工具,专注于从 Python 源代码中提取注释与类型提示,生成清晰、可读性强的 API 文档(HTML、Markdown 或纯文本)。相比于更复杂的工具(如 Sphinx),pdoc 安装简单、零配置启动、兼容现代类型注解,并支持模块间跳转与 Web 预览,适合追求高效率的开发者和小型项目使用。pdoc 能识别标准的 Python 类型注解(PEP 484)和 docstring(PEP 257),并在文档中渲染出函数签名、参数类型、返回值说明等。
2025-08-31 07:00:00
479
原创 Python 第三方库:pydantic(数据模型与验证)
pydantic 是一个基于 Python 类型注解的数据验证与解析库,支持自动校验、类型转换、嵌套模型、导入导出、配置管理等功能。它广泛用于数据清洗、API 参数校验、配置系统构建,尤其是 FastAPI 等现代 Web 框架的核心组件之一。支持 .dict()、.json()、.model_dump() 等方法导出清洗后的数据。字段可为其他模型、List、Dict、Union、Optional 等复杂结构。mode:导出模式,"python"(默认)或 "json"(会将日期等序列化)
2025-08-30 16:58:00
398
原创 Python 第三方库:typeguard(运行时类型检查工具)
它可以在程序运行期间自动检查函数参数和返回值是否符合类型注解(PEP 484),从而帮助开发者发现类型错误、提高代码健壮性。这类静态类型检查器不同,typeguard 是动态检查工具,可直接嵌入生产代码中运行。(1)检查函数参数是否与类型注解一致(如 str、int、List[float])。类型检查发生在运行时,对性能有轻微影响,不建议在高频函数或生产环境下全局开启。Python 本身的类型注解不会自动执行类型检查,仅供 IDE 或工具使用。(2)检查函数的返回值是否符合类型注解。
2025-08-30 13:55:00
837
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人