python基础入门:2.1变量与基本数据类型
变量与基本数据类型
1. 动态类型特性
1.1 变量定义与类型绑定
Python采用动态类型机制,变量在赋值时自动确定类型:
# 无需类型声明
counter = 10 # 初始为整型
counter = "次" # 变为字符串
counter = 3.14 # 再变为浮点数
核心特点:
- 变量是对象的引用标签
- 类型信息存储在对象中
- 变量可随时指向任意类型对象
1.2 类型检查与错误示例
price = 99
price = price + "元" # 触发TypeError
TypeError: unsupported operand type(s) for +: 'int' and 'str'
调试建议:
- 使用
type()
函数验证类型 - 通过
isinstance()
进行类型判断:
value = 100
if isinstance(value, int):
print("这是整数类型")
2. 基本数据类型详解
2.1 数值类型操作
类型 | 示例 | 特性说明 |
---|---|---|
int | 2023 | 支持任意精度整数 |
float | 3.1415926 | 双精度浮点(可能精度丢失) |
bool | True/False | 实际是int的子类(True=1) |
数值运算示例:
# 大整数计算(自动处理溢出)
big_num = 2 ** 1000 # 计算2的1000次方
# 浮点精度问题(所有语言通病)
0.1 + 0.2 == 0.3 # 返回False(实际0.30000000000000004)
# 布尔运算
is_valid = (10 > 5) and ("a" in "apple")
2.2 字符串操作
定义方式对比:
str1 = '单引号字符串'
str2 = "双引号字符串"
str3 = """多行
字符串"""
常用方法:
text = " Python编程指南 "
# 基础操作
len(text) # 返回字符串长度 → 10
text.strip() # 去首尾空格 → "Python编程指南"
text.split(" ") # 按空格分割 → ['', 'Python编程指南', '']
# 格式化输出
name = "Alice"
print(f"欢迎,{name}!") # 输出:欢迎,Alice!
3. 类型转换机制
3.1 显式类型转换方法
函数 | 作用 | 示例 |
---|---|---|
int() | 转换为整型 | int("100") → 100 |
float() | 转换为浮点型 | float(10) → 10.0 |
str() | 转换为字符串 | str(3.14) → "3.14" |
bool() | 转换为布尔型 | bool("") → False |
转换规则:
int("1010", 2) # 二进制转换 → 10
float("3.14") # 字符串转浮点 → 3.14
str([1,2,3]) # 列表转字符串 → "[1, 2, 3]"
bool(0) # → False
bool("False") # → True(非空字符串即为True)
3.2 隐式自动转换
算术运算转换:
10 + 3.14 # int自动转float → 13.14
True + 5 # bool转int → 6
逻辑上下文转换:
if "": # 空字符串转False
print("不会执行")
while 0: # 0转False
break
4. 最佳实践与常见错误
4.1 类型使用建议
-
数值运算:
# 精确计算建议使用Decimal from decimal import Decimal Decimal('0.1') + Decimal('0.2') == Decimal('0.3') # True
-
字符串处理:
# 避免多次字符串拼接(性能差) parts = ["Hello", "Python", "World"] result = " ".join(parts) # 高效拼接方法
4.2 典型错误案例
案例1:输入类型处理
age = input("请输入年龄:") # 返回字符串
# 错误写法:
if age > 18: # 字符串与数字比较
...
# 正确写法:
if int(age) > 18:
...
案例2:浮点数相等判断
# 错误方式:
a = 0.1 + 0.2
b = 0.3
a == b # → False
# 正确方式:
abs(a - b) < 1e-9 # 允许极小误差
5. 类型系统全景图
Python类型层次结构:
graph TD
A[object] --> B[int]
A --> C[float]
A --> D[str]
A --> E[bool]
E --> B # bool继承int
数据类型扩展:
- 容器类型:
list
/dict
/tuple
/set
- 二进制类型:
bytes
/bytearray
- 特殊类型:
NoneType
(None值)
下节预告:在接下来的章节中,我们将深入探讨Python的复合数据类型,包括列表、元组和字典的操作技巧,并实现一个学生成绩管理系统。