🐍 Python 新手必看:数据类型与类型转换完全指南
刚学 Python,被
int、str、float绕晕了?别担心,这篇教程用最通俗的语言,带你彻底搞懂 Python 的数据类型和类型转换。
一、为什么数据类型很重要?
在编程世界里,数据就是一切。但数字123和文本"123"是完全不同的东西——前者可以做数学运算,后者只是一串字符。
数据类型就是 Python 给每个数据贴上的"标签",告诉计算机:这个数据该怎么存储、能做什么操作。
二、Python 的六大基础数据类型
1. 整数(int)
就是我们数学里的整数,没有小数点。
age = 18 year = 2026 temperature = -5 print(type(age)) # <class 'int'>2. 浮点数(float)
带小数点的数字。
price = 19.99 pi = 3.14159 height = -1.75 print(type(price)) # <class 'float'>💡注意:
1.0虽然是整数数值,但因为有小数点,Python 会把它当作float。
3. 字符串(str)
文本数据,必须用引号包裹(单引号、双引号都可以)。
name = "Alice" message = '你好,Python!' empty = "" # 空字符串也是字符串 print(type(name)) # <class 'str'>字符串还可以用三引号写多行:
poem = """床前明月光, 疑是地上霜。"""4. 布尔值(bool)
只有两个值:True(真)和False(假)。
is_student = True has_money = False print(type(is_student)) # <class 'bool'>布尔值常用于条件判断,比如if语句。
5. 空值(NoneType)
表示"什么都没有",只有一个值None。
result = None print(type(result)) # <class 'NoneType'>常用于初始化变量或表示函数没有返回值。
6. 复数(complex)
新手很少用到,知道有这个东西就行。
c = 3 + 4j print(type(c)) # <class 'complex'>三、如何查看数据类型?
Python 提供了两个常用工具:
①type()函数
最直接的方式:
print(type(100)) # <class 'int'> print(type("100")) # <class 'str'> print(type(3.14)) # <class 'float'> print(type(True)) # <class 'bool'>②isinstance()函数
用于判断某个数据是否是指定类型,返回布尔值:
print(isinstance(100, int)) # True print(isinstance("100", int)) # False print(isinstance(3.14, (int, float))) # True(可以是多种类型之一)💡
isinstance()在写条件判断时特别有用,比如先判断类型再决定怎么处理数据。
四、数据类型转换
很多时候,我们需要把一种类型变成另一种类型。比如用户输入的是字符串"18",但我们需要把它当成数字来计算年龄。
1. 显式转换(强制转换)
Python 提供了几个内置函数:
表格
| 函数 | 作用 | 示例 |
|---|---|---|
int() | 转成整数 | int("10")→10 |
float() | 转成浮点数 | float("3.14")→3.14 |
str() | 转成字符串 | str(100)→"100" |
bool() | 转成布尔值 | bool(1)→True |
list() | 转成列表 | list("abc")→['a','b','c'] |
常见转换示例
# 字符串 → 整数 age_str = "18" age_int = int(age_str) print(age_int + 2) # 20 # 整数 → 字符串 num = 100 num_str = str(num) print("编号:" + num_str) # 编号:100 # 整数 → 浮点数 a = 5 b = float(a) print(b) # 5.0 # 浮点数 → 整数(直接截断小数,不是四舍五入!) c = 3.99 d = int(c) print(d) # 3布尔值的转换规则
# 数字转布尔:0 是 False,其他都是 True print(bool(0)) # False print(bool(-5)) # True print(bool(3.14)) # True # 字符串转布尔:空字符串是 False,其他都是 True print(bool("")) # False print(bool("hello")) # True # None 转布尔 print(bool(None)) # False2. 隐式转换(自动转换)
Python 会在某些运算中自动转换类型,不需要你手动操作。
# 整数 + 浮点数 → 自动变成浮点数 result = 5 + 3.2 print(result) # 8.2 print(type(result)) # <class 'float'> # 布尔值参与数学运算时,True=1, False=0 print(True + 5) # 6 print(False * 10) # 0⚠️注意:隐式转换只发生在"不会丢失信息"的情况下。字符串和数字之间不会自动转换。
五、新手最常踩的坑
❌ 坑 1:字符串和数字直接相加
age = 18 print("我今年" + age + "岁") # ❌ 报错!原因:Python 不允许字符串和数字直接拼接。
解决:
# 方法1:转换成字符串 print("我今年" + str(age) + "岁") # 方法2:用 f-string(推荐,最优雅) print(f"我今年{age}岁")❌ 坑 2:int()转换浮点字符串报错
pi = "3.14" print(int(pi)) # ❌ 报错!ValueError原因:int()不能直接转换带小数的字符串。
解决:
# 先转 float,再转 int print(int(float(pi))) # 3❌ 坑 3:空字符串转整数
print(int("")) # ❌ 报错!ValueError解决:转换前先判断:
s = "" if s: num = int(s) else: num = 0❌ 坑 4:float转int不是四舍五入
print(int(2.9)) # 2,不是 3!解决:需要四舍五入用round():
print(round(2.9)) # 3 print(round(2.4)) # 2六、一张图记住类型转换
┌──────────┐ │ 字符串 │◄────────┐ │ "123" │ │ └────┬─────┘ │ │ str() │ int()│ float() │ ▼ │ ┌──────────┐ │ │ 整数 │ │ │ 123 │◄───────┤ └────┬─────┘ │ │ float() │ ▼ │ ┌──────────┐ │ │ 浮点数 │ │ │ 123.0 │────────┘ └──────────┘ str()七、总结
表格
| 数据类型 | 英文 | 示例 | 特点 |
|---|---|---|---|
| 整数 | int | 42,-7 | 没有小数点 |
| 浮点数 | float | 3.14,-0.5 | 有小数点 |
| 字符串 | str | "hello" | 用引号包裹 |
| 布尔值 | bool | True,False | 只有两种值 |
| 空值 | NoneType | None | 表示"无" |
记住三个核心函数:
type(x)—— 查看类型isinstance(x, type)—— 判断类型int()/float()/str()—— 转换类型