变量、数据类型与运算
学习目标
- 理解名字绑定、可变性和类型转换。
- 掌握数字、布尔、空值、比较、逻辑和位运算。
- 能选择安全的格式化和舍入方式。
核心知识点
Python 的变量没有预先声明的固定类型;赋值是让名字指向对象。int、float、complex 是数字类型,bool 是 int 的子类,None 表示缺少值。强类型意味着字符串不会自动当数字相加。
常用用法
赋值与多重赋值
python
name = "Ada"
age, language = 36, "Python"
first, *middle, last = [1, 2, 3, 4]
print(name, age, language, middle)
# 输出:Ada 36 Python [2, 3]解包要求元素数量匹配;带星号的名字会接收一个列表。
type() 与 isinstance()
python
value = 42
print(type(value).__name__, isinstance(value, int))
# 输出:int Truetype(x) is T 只匹配精确类型;isinstance 会考虑继承关系,业务判断通常优先用后者。
数值运算
python
a, b = 17, 5
result = (a + b, a - b, a * b, a / b, a // b, a % b, a ** 2)
print(result)
# 输出:(22, 12, 85, 3.4, 3, 2, 289)/ 总是产生浮点数,// 是向下取整而不是简单截断。
显式类型转换
python
text = "3.14"
number = float(text)
count = int("12")
print(number, count, str(count))
# 输出:3.14 12 12转换失败会抛出 ValueError;对外部输入应先校验或捕获异常。
比较与逻辑运算
python
score = 86
passed = 60 <= score < 100
label = "通过" if passed else "不通过"
print(passed, label, not False, True and "yes")
# 输出:True 通过 True yes链式比较按数学直觉连接;and、or 返回操作数,不一定返回布尔值。
数字格式化
python
price = 12.5
ratio = 0.875
print(f"价格:{price:.2f},比例:{ratio:.1%}")
# 输出:价格:12.50,比例:87.5%f-string 适合展示,金额计算不要依赖二进制浮点的精确相等。
不常用但需要知道
decimal.Decimal
python
from decimal import Decimal
total = Decimal("0.10") + Decimal("0.20")
print(total)
# 输出:0.30财务计算从字符串构造 Decimal,不要先经过 float。
fractions.Fraction
python
from fractions import Fraction
value = Fraction(1, 3) + Fraction(1, 6)
print(value)
# 输出:1/2分数适合需要精确有理数的算法,代价是运算速度和表示范围。
位运算
python
mask = 0b0101
flag = 0b0011
print(mask & flag, mask | flag, mask ^ flag, mask << 1)
# 输出:1 7 6 10位运算常用于标志位和底层协议,普通业务条件优先使用具名布尔值。
易混点
None应使用is None,不要用== None。bool是int的子类,True + True的结果是 2,但不要用它表达计数语义之外的东西。round(2.5)遵循“银行家舍入”,不要当作总是远离零的四舍五入。/、//和%对负数的行为要用示例验证。is比较对象身份,==比较值。
课后小问
17 // 5和17 / 5的结果有什么区别? 答案:前者是 3,后者是 3.4。 解析://返回不大于商的最大整数(对负数仍向下),/返回浮点商。为什么推荐
Decimal("0.10")而不是Decimal(0.10)? 答案:后者会把浮点数已经产生的二进制近似带入 Decimal。 解析:字符串能准确表达十进制金额,构造时不会丢失精度。
本节小结
掌握绑定、类型检查、显式转换、运算符和格式化后,就能读懂大多数基础表达式;精度敏感场景再选择 Decimal 或 Fraction。
快速回顾
- 检查类型:
type、isinstance - 空值判断:
is None - 商与余数:
/、//、% - 条件表达式:
a if condition else b - 精确数值:
Decimal、Fraction
阿源的知识库