2.1变量与基本数据类型

217 阅读3分钟

变量与基本数据类型

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 数值类型操作

类型示例特性说明
int2023支持任意精度整数
float3.1415926双精度浮点(可能精度丢失)
boolTrue/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自动转float13.14
True + 5     # bool转int6

逻辑上下文转换

if "":               # 空字符串转False
    print("不会执行")
    
while 0:            # 0转False
    break

4. 最佳实践与常见错误

4.1 类型使用建议

  1. 数值运算

    # 精确计算建议使用Decimal
    from decimal import Decimal
    Decimal('0.1') + Decimal('0.2') == Decimal('0.3')  # True
    
  2. 字符串处理

    # 避免多次字符串拼接(性能差)
    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类型层次结构

Syntax error in textmermaid version 10.9.1
ERROR: [Mermaid] Parse error on line 6:
...-> E[bool]E --> B # bool继承int
----------------------^
Expecting 'SEMI', 'NEWLINE', 'EOF', 'AMP', 'START_LINK', 'LINK', got 'BRKT'

数据类型扩展

  • 容器类型:list/dict/tuple/set
  • 二进制类型:bytes/bytearray
  • 特殊类型:NoneType(None值)

下节预告:在接下来的章节中,我们将深入探讨Python的复合数据类型,包括列表、元组和字典的操作技巧,并实现一个学生成绩管理系统。