Python:Python3.6 数据类型源码解析

💖亲爱的技术爱好者们,热烈欢迎来到 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 类型只有两个实例:TrueFalse。在内部,boolint 类型的子类,这意味着它继承了 int 的大部分方法与属性,因此你可以对布尔值使用诸如 bit_length()numeratordenominatorrealimag 等方法。不过,在逻辑运算和条件判断中,TrueFalse 分别代表真和假,其数值分别为 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()
      • 说明: 返回自身。对布尔值来说,其共轭复数依然为 TrueFalse
      • 示例:
        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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thomas Kant

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值