为什么需要数据类型?
不同的数据拥有不同的特点。
例如:
数字可以计算:
10 + 5
结果:
15
而字符串可以拼接:
"Hello" + " World"
结果:
Hello World
如果 Python 不知道数据是什么类型,就无法判断应该执行哪种操作。
因此,每一个变量都有属于自己的数据类型。
Python 是动态类型语言
Python 是一种动态类型语言(Dynamic Typing)。
意思就是:
你不需要告诉 Python 变量是什么类型,它会自动判断。
例如:
name = "John Doe"
age = 25
Python 会自动识别:
| 变量 | 数据 | 自动判断的数据类型 |
|---|---|---|
name |
"John Doe" |
字符串(String) |
age |
25 |
整数(Integer) |
整个过程中,我们没有写任何类型声明。
与静态类型语言有什么区别?
有些编程语言(例如 Java、C#、C++)属于静态类型语言(Static Typing)。
在这些语言中,创建变量时必须先声明类型。
例如(Java):
String name = "John Doe";
int age = 25;
这里:
String表示字符串类型int表示整数类型
如果类型写错,程序通常在运行之前就会报错。
而 Python 不需要这样做。
直接写:
name = "John Doe"
age = 25
即可。
动态类型有哪些优点?
由于 Python 自动推断数据类型,因此代码更加简洁。
例如:
price = 99.9
不用写:
float price = 99.9
优点:
- ✅ 代码更少
- ✅ 编写速度更快
- ✅ 更容易学习
- ✅ 修改变量类型更加方便
例如:
x = 100
稍后:
x = "Python"
Python 依然允许这样写。
动态类型有什么缺点?
虽然动态类型很方便,但也有不足。
因为 Python 是在程序运行时(Runtime) 才检查数据类型。
如果类型使用错误,程序运行到那一行才会发现。
例如:
age = "18"
print(age + 5)
运行时会报错,因为:
字符串不能直接与数字相加。
也就是说:
Python 不会提前发现这个问题,而是在程序执行到这里时才停止运行。
编译时错误 vs 运行时错误
很多初学者容易混淆这两个概念。
可以简单理解为:
| 比较 | Python | Java、C++ 等 |
|---|---|---|
| 检查类型时间 | 程序运行时 | 编译时 |
| 是否需要声明类型 | 不需要 | 需要 |
| 类型错误什么时候发现 | 运行到错误代码时 | 程序运行前 |
对于初学者来说,只需要记住:
Python 的类型错误通常是在程序运行过程中发现的,而不是写代码时发现。
Python 常见的数据类型
下面介绍 Python 中最常见的数据类型。
1. 整数(int)
整数(Integer)表示没有小数部分的数字。
例如:
age = 18
print(age)
输出:
18
还可以表示负数:
number = -5
常见用途:
- 年龄
- 数量
- 分数
- 人数
2. 浮点数(float)
浮点数(Float)表示带有小数点的数字。
例如:
price = 99.9
print(price)
输出:
99.9
常见用途:
- 身高
- 体重
- 温度
- 金额
3. 字符串(str)
字符串(String)表示文本内容。
必须使用:
- 单引号
' ' - 双引号
" "
包围。
例如:
name = "Alice"
print(name)
输出:
Alice
字符串可以保存:
- 姓名
- 地址
- 一段文字
- 邮箱
4. 布尔值(bool)
布尔值(Boolean)只有两个结果:
True
表示:
真(是)
以及:
False
表示:
假(否)
例如:
is_student = True
print(is_student)
输出:
True
布尔值经常用于:
- 判断条件
- 是否登录
- 是否成功
- 是否开启
5. 列表(list)
列表(List)表示一组有序的数据。
特点:
- 使用中括号
[] - 可以存放不同类型的数据
- 可以修改内容
例如:
my_list = [22, "Hello world", 3.14, True]
print(my_list)
输出:
[22, 'Hello world', 3.14, True]
可以把列表理解成:
一个可以装很多东西的盒子。
6. 元组(tuple)
元组(Tuple)和列表很像。
不同的是:
元组创建后不能修改。
例如:
my_tuple = (7, "hello", 8.5)
print(my_tuple)
输出:
(7, 'hello', 8.5)
特点:
- 使用小括号
() - 有序
- 不可修改(不可变)
7. 集合(set)
集合(Set)用于保存唯一的数据。
特点:
- 使用花括号
{} - 自动去除重复元素
- 元素没有固定顺序
例如:
my_set = {7, "hello", 8.5}
print(my_set)
输出示例:
{7, 'hello', 8.5}
注意: 集合是无序的,每次打印元素顺序可能不同。
8. 字典(dict)
字典(Dictionary)用于保存**键(Key)和值(Value)**的对应关系。
格式:
键 : 值
例如:
student = {
"name": "Alice",
"age": 25
}
print(student)
输出:
{'name': 'Alice', 'age': 25}
可以理解成一本真正的字典:
| 键(Key) | 值(Value) |
|---|---|
| name | Alice |
| age | 25 |
9. range(范围)
range() 用于生成一段连续数字。
例如:
numbers = range(5)
print(numbers)
输出:
range(0, 5)
它表示:
0 1 2 3 4
range() 经常用于 for 循环中。
10. None
None 是 Python 中的一个特殊值。
表示:
没有值(空值)。
例如:
result = None
print(result)
输出:
None
常用于:
- 变量暂时没有数据
- 函数没有返回值
- 表示未知状态
常见数据类型一览表
| 数据类型 | 英文名称 | 示例 | 用途 |
|---|---|---|---|
int |
Integer | 10 |
整数 |
float |
Float | 3.14 |
小数 |
str |
String | "Python" |
文本 |
bool |
Boolean | True |
真或假 |
list |
List | [1, 2, 3] |
有序、可修改的数据集合 |
tuple |
Tuple | (1, 2, 3) |
有序、不可修改的数据集合 |
set |
Set | {1, 2, 3} |
无序且元素唯一 |
dict |
Dictionary | {"name": "Tom"} |
键值对数据 |
range |
Range | range(5) |
连续数字序列 |
None |
NoneType | None |
表示空值 |
学习小结
| 知识点 | 说明 |
|---|---|
| 数据类型(Data Type) | 表示变量中保存的数据种类。 |
| 动态类型(Dynamic Typing) | Python 会根据赋值自动推断变量类型,无需手动声明。 |
| 静态类型(Static Typing) | Java、C++ 等语言需要先声明变量类型。 |
| 运行时检查 | Python 的类型错误通常会在程序运行到对应代码时才发现。 |
| 常见数据类型 | int、float、str、bool、list、tuple、set、dict、range、None。 |
总结
- 数据类型决定了变量中保存的数据是什么,以及这些数据可以执行哪些操作。
- Python 是一种动态类型语言,会根据赋值自动推断变量的数据类型,无需提前声明。
- 与静态类型语言相比,Python 编写代码更简单、更灵活,但类型错误通常会在程序运行时才被发现。
- 学会区分并使用常见的数据类型(如整数、字符串、列表和字典等),是后续学习变量、条件判断、循环和函数等内容的重要基础。