开篇口决:数字分整浮,文字是字符。
一、先搞懂:Python 数据类型两大分类
Python 中所有数据皆为对象,整体分为两大类,记住这个框架就不会乱:
1. 基础原子类型(不可变)
最小数据单元,不能再拆分、不能原地修改,修改只会生成新数据。
包含:整数、浮点数、字符串、布尔值、空值
2. 容器组合类型(可变/不可变)
可以存放多个数据,是日常开发、数据分析最常用的类型。
包含:列表、元组、字典、集合
二、5大基础数据类型(必掌握)
1. 整数 int:纯整数,无小数点
定义:所有正负整数、0,无小数,支持超大数值,无需担心溢出。
典型场景:人数、数量、ID、页码、次数、序号
示例:
age = 20count = 100num = -66
特点:精准无误差,运算绝对可靠。
2. 浮点数 float:带小数的数字
定义:带小数点的数值,支持小数、科学计数法。
典型场景:身高、体重、价格、利率、温度、坐标
示例:
price = 9.9height = 175.5num = 3e2 # 科学计数法,等价300.0
新手大坑(必看):
浮点数存在精度误差,比如 0.1+0.2 != 0.3,金融计算绝对不要直接用 float,需使用 decimal 模块!
3. 字符串 str:一切文本内容
定义:所有文字、符号、数字文本,单/双/三引号包裹,不可变。
典型场景:姓名、账号、密码、文案、地址、日志信息
示例:
name = "张三"msg = 'Hello Python'info = """多行文本内容"""
核心特性:可切片、可遍历、可拼接,但不能单独修改某个字符。
4. 布尔 bool:只有真/假
定义:仅两个值 True(真)、False(假),专门用于判断逻辑。
典型场景:条件判断、开关状态、是否登录、是否达标
示例:
is_login = Trueis_ok = 10 > 20 # 结果为False
高频规则:
0、空字符串、空列表、None 都会被判定为假;非空、非0数值判定为真。
5. 空值 NoneType:唯一的空 None
定义:Python 专属空值,不等于0、不等于空字符串,代表「无、未定义、空对象」。
典型场景:函数默认返回值、初始化空变量、接口空数据、缺失值占位
避坑:判断空值必须用 if x is None,不要用 == 判断!
三、4大容器数据类型(开发核心)
1. 列表 list:有序、可重复、可修改
符号:中括号 []
特点:有序排列、支持重复元素、随时增删改查,最灵活的容器。
场景:任务列表、成绩列表、用户列表、批量数据存储
示例:
score = [90,88,76,90]name_list = ["小明","小红"]
2. 元组 tuple:有序、可重复、不可修改
符号:小括号 (),单元素必须加逗号 (10,)
特点:和列表几乎一致,但不可增删改,只读更安全、速度更快。
场景:固定配置、坐标、常量数据、函数多返回值
核心价值:数据不会被意外篡改,适合存放固定不变的内容。
3. 字典 dict:键值对、极速查找
符号:大括号 {},键值对形式key:value
特点:无序存储(3.7+有序)、键唯一不可变、值任意类型、查询速度极快。
场景:用户信息、配置参数、接口数据、对象属性存储
示例:
user = {"name":"张三","age":20,"gender":"男"}
重点规则:键只能是字符串、数字、元组等不可变类型,列表不能当键。
4. 集合 set:无序、不重复、去重神器
符号:大括号 {},无键值对
特点:元素自动去重、无序、不可索引,支持交集、并集、差集运算。
场景:数据去重、对比两组数据差异、筛选共同元素
示例:
nums = {1,2,2,3,3,4} # 自动变为 {1,2,3,4}
四、可变类型 vs 不可变类型(面试必问)
新手最容易混淆的核心知识点,直接记结论:
✅ 不可变类型(值不能原地修改)
int、float、str、bool、tuple、None
特点:修改数据 = 生成新数据,原数据不变,安全稳定。
✅ 可变类型(值可以原地修改)
list、dict、set
特点:增删改不会生成新对象,直接修改原数据,灵活但易踩坑。
五、新手高频报错避坑指南
1. 字符串不能直接修改单个字符:属于不可变类型,需重新赋值
2. 元组单元素必须加逗号:(10) 是整数,(10,) 才是元组
3. 字典键不能用列表:可变类型无法哈希,会直接报错
4. 集合不能存可变元素:列表、字典不能放入集合
5. 区分 0、空字符串、None:三者完全不等价,空值判断优先用 is None
6. 浮点数不用于精准计算:金额、统计精准计算务必使用 decimal
六、万能判断数据类型方法
不确定数据类型?一行代码直接查看:
print(type(变量名))
日常调试、对接接口、处理数据时,用这行代码可以解决90%的类型报错问题。
记得点赞 + 关注哦,后面持续更新!