💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在优快云上与你们相遇~💖

本博客的精华专栏:
【自动化测试】 【测试经验】 【人工智能】 【Python】
Python3 系列
基础
进阶

Python3.6数据类型源码解析
下面整理的是 Python 最新版本(如 Python 3.12)内置数据类型的源码解析说明,基本沿用了 Python 3.6 时期的接口格式,但在内部实现和部分细节上已有改进与优化。以下内容按照 int、float、str、list、tuple、dict、set 的顺序进行说明,每个类型都详细列出所有方法(或属性)及其功能说明和示例代码。

一、整型 int
数据类型说明
int 用于表示整数。在最新版本中,除支持各种进制的字面量转换外,还在内部对大整数的存储与运算做了多项优化,使得高精度整数的计算更高效。尽管内部实现可能已有变动,但对用户暴露的接口保持一致。
方法说明
-
bit_length()
- 说明: 返回整数的二进制表示所需的位数(不含符号位)。
- 示例:
n = 37 print(n.bit_length()) # 输出 6,因为 37 的二进制为 0b100101
-
conjugate()
- 说明: 返回自身。该方法主要是为了满足复数接口,即整数的共轭复数依然为整数本身。
- 示例:
n = 5 print(n.conjugate()) # 输出 5
-
from_bytes(bytes, byteorder, *, signed=False)【类方法】
- 说明: 根据给定的字节序列生成整数。参数
byteorder指定字节顺序(“big” 或 “little”),signed指示是否采用有符号表示。 - 示例:
b = b'\x00\x10' print(int.from_bytes(b, byteorder='big')) # 输出 16
- 说明: 根据给定的字节序列生成整数。参数
-
to_bytes(length, byteorder, *, signed=False)
- 说明: 将整数转换为指定字节长度的字节串。若整数无法在给定字节数内表示则引发 OverflowError。
- 示例:
n = 1024 print(n.to_bytes(2, byteorder='big')) # 输出 b'\x04\x00'
-
denominator (属性)
- 说明: 返回整数作为有理数时的分母,始终为 1。
- 示例:
n = 7 print(n.denominator) # 输出 1
-
numerator (属性)
- 说明: 返回整数作为有理数时的分子,即整数本身。
- 示例:
n = 7 print(n.numerator) # 输出 7
-
real (属性)
- 说明: 返回整数的实部,对于 int 类型始终等于自身。
- 示例:
n = 5 print(n.real) # 输出 5
-
imag (属性)
- 说明: 返回整数的虚部,对于 int 类型始终为 0。
- 示例:
n = 5 print(n.imag) # 输出 0
二、浮点型 float
数据类型说明
float 用于表示浮点数,新版本在底层实现上针对 IEEE 754 规范做了更严格的异常处理与高精度计算支持,接口保持与旧版一致。
方法说明
-
as_integer_ratio()
- 说明: 返回一个二元组
(numerator, denominator),使得分子除以分母等于该浮点数。对无穷大和 NaN 值分别引发 OverflowError 或 ValueError。 - 示例:
f = 10.0 print(f.as_integer_ratio()) # 输出 (10, 1)
- 说明: 返回一个二元组
-
conjugate()
- 说明: 返回浮点数自身,对复数接口进行支持。
- 示例:
f = 3.14 print(f.conjugate()) # 输出 3.14
-
fromhex(string)【静态方法】
- 说明: 从十六进制字符串构造一个浮点数,支持 IEEE 754 格式表达(例如带指数 p 标识)。
- 示例:
print(float.fromhex('0x1.ffffp10')) # 输出 2047.984375
-
hex()
- 说明: 返回浮点数的十六进制字符串表示,其输出可用于精确重建该浮点值。
- 示例:
f = 3.14159 print(f.hex()) # 输出类似 '0x1.921f9f01b866ep+1'
-
is_integer()
- 说明: 判断浮点数是否无小数部分,即是否可以精确表示为整数。
- 示例:
print((3.0).is_integer()) # 输出 True print((3.14).is_integer()) # 输出 False
-
real (属性)
- 说明: 返回浮点数的实部,等于该浮点数本身。
- 示例:
f = 3.14 print(f.real) # 输出 3.14
-
imag (属性)
- 说明: 返回浮点数的虚部,对于 float 类型始终为 0.0。
- 示例:
f = 3.14 print(f.imag) # 输出 0.0
三、布尔类型 bool
数据类型说明
bool 类型只有两个实例:True 与 False。在内部,bool 是 int 类型的子类,这意味着它继承了 int 的大部分方法与属性,因此你可以对布尔值使用诸如 bit_length()、numerator、denominator、real、imag 等方法。不过,在逻辑运算和条件判断中,True 与 False 分别代表真和假,其数值分别为 1 和 0。最新版本在内部实现上继续沿用这种设计,同时在性能和内存优化上进一步提升。
方法说明
-
继承自 int 的方法
由于bool继承自int,以下方法也适用于布尔值:- bit_length()
- 说明: 返回整数的二进制表示所需的位数。例如,
True以数值 1 表示,其二进制为1,位数为 1;False表示 0,位数为 0。 - 示例:
print(True.bit_length()) # 输出 1 print(False.bit_length()) # 输出 0
- 说明: 返回整数的二进制表示所需的位数。例如,
- conjugate()
- 说明: 返回自身。对布尔值来说,其共轭复数依然为
True或False。 - 示例:
print(True.conjugate()) # 输出 True
- 说明: 返回自身。对布尔值来说,其共轭复数依然为
- numerator 和 denominator
- 说明: 布尔值表示为有理数时,
True的分子为 1,分母为 1;False的分子为 0,分母为 1。 - 示例:
print(True.numerator) # 输出 1 print(False.numerator) # 输出 0 print(True.denominator) # 输出 1 print(False.denominator) # 输出 1
- 说明: 布尔值表示为有理数时,
- real 与 imag 属性
- 说明:
real返回布尔值对应的整数(1 或 0);imag始终为 0。 - 示例:
print(True
- 说明:
- bit_length()

最低0.47元/天 解锁文章
570

被折叠的 条评论
为什么被折叠?



