Python基础数据类型(一):数字类型

🌈个人主页:聆风吟_

🔥系列专栏:Python编程日志C标准库

🔖少年有梦不应止于心动,更要付诸行动。


文章目录

  • 📋前言
    • 一、数字类型总览
    • [二、int 整数类型](#二、int 整数类型)
      • [2.1 定义](#2.1 定义)
      • [2.2 不同进制整数字面量写法](#2.2 不同进制整数字面量写法)
      • [2.3 进制转换内置函数](#2.3 进制转换内置函数)
    • [三、float 浮点数类型](#三、float 浮点数类型)
      • [3.1 定义](#3.1 定义)
      • [3.2 经典问题:浮点数精度丢失](#3.2 经典问题:浮点数精度丢失)
      • [3.3 特殊浮点常量](#3.3 特殊浮点常量)
    • [四、bool 布尔类型](#四、bool 布尔类型)
      • [4.1 定义](#4.1 定义)
      • [4.2 布尔真假判定规则](#4.2 布尔真假判定规则)
    • 五、数字类型强制转换
      • [5.1 int() 转为整数](#5.1 int() 转为整数)
      • [5.2 float() 转为浮点数](#5.2 float() 转为浮点数)
      • [5.3 bool() 转为布尔值](#5.3 bool() 转为布尔值)
  • 📝全文总结

📋前言

上一篇完整梳理了Python所有内置数据类型,本篇聚焦最基础的数字类型Number,逐一讲解整数、浮点数、布尔值三大子类型,覆盖进制写法、数学运算规则、浮点精度缺陷、类型强制转换。


一、数字类型总览

Python数字类型专门用于数值存储与数学计算,包含3个子类型:

  1. int:整数
  2. float:浮点数(小数)
  3. bool:布尔类型,是int的子类,仅存在TrueFalse两个取值

使用type()查看变量实际类型,isinstance()可判断继承关系:

python 复制代码
a = 10
print(type(a))                # 输出: <class 'int'>
print(isinstance(True, int))  # True

二、int 整数类型

2.1 定义

正数、负数、0 都属于整数;Python3 的 int 没有数值长度上限,超大整数也能正常存储和运算。

python 复制代码
num1 = 99
num2 = -50
num3 = 0
big_num = 9999999999999999999999999999
print(type(big_num))  # 输出: <class 'int'>

补充说明 :Python3 彻底取消了long长整型,所有整数统一归为int,不再区分短整型、长整型,大幅降低记忆负担。

2.2 不同进制整数字面量写法

默认使用十进制编码;二进制、八进制、十六进制多用于底层开发、编码解析、硬件交互场景。

进制 标识前缀 示例 等价十进制
十进制 默认无前缀 18 18
二进制 0b 0b101 5
八进制 0o 0o12 10
十六进制 0x 0x1a 26
python 复制代码
print(0b101)   # 5
print(0o12)    # 10
print(0x1a)    # 26

2.3 进制转换内置函数

Python内置3个整型进制转换函数:bin()oct()hex();搭配int()可实现任意进制字符串转回十进制。

(1)bin(num):十进制 → 二进制

返回携带0b前缀的二进制字符串,切片去除前缀即可拿到纯数字:

python 复制代码
num = 10
res = bin(num)
print(res)          # '0b1010'
print(res[2:])      # 去掉前缀:'1010'

知识点s[2:]为字符串切片,代表从索引下标2开始截取至字符串末尾。

(2)oct(num):十进制 → 八进制

返回携带0o前缀的八进制字符串:

python 复制代码
num = 10
print(oct(num))     # '0o12'
print(oct(num)[2:]) # '12'

(3)hex(num):十进制 → 十六进制

返回携带0x前缀的小写十六进制字符串,可通过upper()转大写:

python 复制代码
num = 31
print(hex(num))         # '0x1f'
print(hex(num)[2:])     # '1f'
print(hex(num).upper()) # '0X1F'

知识点str.upper()会将字符串内小写英文字母转为大写,数字、符号、中文不受影响;字符串不可变,该方法仅返回新字符串,不会修改原变量。

(4)int() 万能解析:任意进制字符串 → 十进制

语法:int(进制字符串, base=进制基数)

  • base取值范围:2 ~ 36,0-9、a-z依次映射数位数值;
  • 字符串自带0b/0o/0x前缀不影响解析结果。
python 复制代码
# 二进制转十进制
print(int('1010', 2))    # 10
print(int('0b1010', 2))  # 10

# 八进制转十进制
print(int('12', 8))      # 10
print(int('0o12', 8))    # 10

# 十六进制转十进制
print(int('1f', 16))     # 31
print(int('0X1F', 16))   # 31

# 36进制(字母z代表数值35)
print(int('z', 36))      # 35

三、float 浮点数类型

3.1 定义

浮点数即带小数点的数值,支持常规小数、科学计数法两种写法:

python 复制代码
f1 = 3.14
f2 = -0.5
# e 代表10的幂次
f3 = 1.2e3    # 等价 1.2 * 10^3 = 1200.0
f4 = 5e-2     # 等价 5 * 10^-2 = 0.05
print(type(f1)) # <class 'float'>

补充说明 :C/C++、Java区分float单精度、double双精度;Python仅提供float,底层等价于双精度double

3.2 经典问题:浮点数精度丢失

计算机采用二进制存储小数,无法精确表达部分十进制小数,运算会产生极小尾差:

python 复制代码
print(0.1 + 0.2)  # 输出: 0.30000000000000004,而非0.3

解决方案:金融、金额高精度计算使用标准库decimal.Decimal必须传入字符串构造对象,禁止直接传入浮点数

python 复制代码
from decimal import Decimal
res = Decimal("0.1") + Decimal("0.2")
print(res)  # 精确输出 0.3

3.3 特殊浮点常量

Python支持无穷大、无穷小、非数字nan三种特殊浮点值:

python 复制代码
print(float('inf'))    # 正无穷大
print(float('-inf'))   # 负无穷大
print(float('nan'))    # 非数字,无法参与等值比较

print(10 / float('inf'))  # 0.0

四、bool 布尔类型

4.1 定义

布尔类型仅有TrueFalse两个固定值,首字母必须大写;布尔是int子类,数值等价:True=1False=0,可直接参与算术运算。

python 复制代码
flag1 = True
flag2 = False
print(True + 10)   # 11
print(False + 5)   # 5

4.2 布尔真假判定规则

任意数据均可通过bool()强制转换布尔值,判定为False的固定假值清单

0、0.0、空字符串""、空列表[]、空元组()、空字典{}、空集合set()、None

除此以外所有数据均判定为真值:

python 复制代码
print(bool(0))        # False
print(bool(-99))      # True
print(bool(""))       # False
print(bool("Python")) # True

五、数字类型强制转换

5.1 int() 转为整数

  • float转int:直接截断小数部分,不会四舍五入;
  • 纯数字字符串可正常转换;
  • 带小数点的字符串(如"3.14")无法直接用int()转换。
python 复制代码
int(3.99)       # 3,截断小数,不四舍五入
int("-66")      # -66
# int("3.14")  # 直接报错

5.2 float() 转为浮点数

整数、合法数字字符串均可转为浮点型:

python 复制代码
print(float(7))       # 7.0
print(float("2.28"))  # 2.28

5.3 bool() 转为布尔值

前文已完整演示,常用于空值校验、if条件分支判断。


📝全文总结

本文主要讲解了:

  1. 数字类型分为 int(整数)、float(浮点数)、bool(布尔)三类,布尔是整数子类;

  2. int 整数无大小限制,支持多种进制写法,配套bin/oct/hex/int完成进制互转;

  3. float 底层双精度存储,天然存在精度丢失,金融计算务必使用 Decimal

  4. bool 继承自 int,仅有两个取值True=1False=0,是条件判断核心;

  5. int()float()bool() 可完成类型互相强制转换。

下期预告: 下一篇将详解字符串 str,包含索引、切片、转义字符、格式化输出以及高频内置方法。

相关推荐
tkevinjd2 小时前
MiniCode 项目详解6:原项目控制系统的10个缺陷(已修复)
python·llm·agent
星栈独行3 小时前
翻完 Pi 源码:它和 Codex、Claude Code 有何不同
开发语言·javascript·人工智能·程序人生
dNGUZ7UGj3 小时前
10分钟完成第一个Python小游戏
python·django
没有梦想的咸鱼185-1037-16633 小时前
AI-Python机器学习与深度学习技术:CNN/Transformer/扩散模型、SHAP可解释及Hermes智能体自动化
人工智能·python·深度学习·机器学习·chatgpt·cnn·transformer
qq_448011163 小时前
C语言中的变量和函数的定义与声明
android·c语言·开发语言
霸道流氓气质3 小时前
SpringBoot中通用工具类库(Utils)封装与使用实践
spring boot·后端·python
孫治AllenSun4 小时前
【DataX】生产环境搭建DataX集群案例
java·开发语言·jvm
Draina5 小时前
CBC填充预言攻击-CBC Padding Oracle Crypto Attack
python·安全·web安全·网络安全·密码学·安全性测试
c238565 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
Angel Q.6 小时前
特征提取 | DINO 到 DINOv3
图像处理·python