9.1 整型的基本概念 #
int 表示整数,包括正数、负数和零。Python 3 的整数没有固定位数上限(仅受内存限制),一般业务计算无需担心溢出。
count = 42
offset = -1
total = 1_000_000 # 下划线仅用于可读性,等价于 1000000
print(type(count)) # <class 'int'>9.2 类型转换 #
从接口、表单、数据库读到的数字常常是字符串,需要转成 int:
print(int("100")) # 100
print(int(3.14)) # 3(截断小数,不是四舍五入)
print(int(True)) # 1
# 解析十六进制字符串(如配置、协议字段)
print(int("FF", 16)) # 255转换失败会抛出 ValueError,生产代码应对用户输入做校验。
9.3 常用运算 #
a, b = 10, 3
print(a + b) # 13 加
print(a - b) # 7 减
print(a * b) # 30 乘
print(a / b) # 3.333... 真除,结果是 float
print(a // b) # 3 整除
print(a % b) # 1 取余
print(a ** b) # 1000 幂
print(a == b) # False
print(a > b) # True注意:/ 得到浮点数;分页、分组等需要整数结果时用 // 和 %。
# 分页常见写法
page, page_size = 2, 10
offset = (page - 1) * page_size # 109.4 常用内置函数 #
print(abs(-5)) # 5
print(max(1, 5, 2)) # 5
print(min(1, 5, 2)) # 1
print(sum([1, 2, 3, 4])) # 10需要四舍五入、向上/向下取整时,对象往往是浮点数,用 round()、math.ceil()、math.floor()(见浮点类型章节)。
9.5 金额等业务 #
在涉及金额、分数、统计等对精度有要求的业务场景,不要用 float 存储和计算金额,应优先使用 Decimal 类型。float 在二进制表示中会产生精度误差,常见于计算工资、金额、收支等敏感数据时。
例如:
print(0.1 + 0.2) # 0.30000000000000004
from decimal import Decimal
print(Decimal("0.1") + Decimal("0.2")) # 0.3Decimal 支持所有常见运算,与 int/float 相比,它的加法、减法、乘法、除法不会引入二进制精度误差,非常适合金融和财务场景。此外:
- 金额建议统一用「分」为单位存 int,从接口/数据库存储和传递都是整数,避免误差。
- 若必须带小数(如汇率、加权平均等),用
Decimal存储、运算并格式化输出。
常见金额格式化可用:
amt = Decimal("1234.5")
print("{:.2f}".format(amt)) # 1234.509.6 位运算 #
位运算是直接操作整数的二进制位,常用于底层协议、标志位、权限管理等场景。常见的位运算有:
&(按位与):两位都为 1 时结果才为 1|(按位或):只要有一个为 1,结果为 1^(按位异或):不同为 1,相同为 0~(按位取反):0 变 1,1 变 0<<(左移):所有位向左移动(高位溢出丢弃,低位补 0)>>(右移):所有位向右移动(低位溢出丢弃,高位补符号位)
示例:
a, b = 5, 3 # 二进制:a = 0b101, b = 0b011
print(a & b) # 1 0b001
print(a | b) # 7 0b111
print(a ^ b) # 6 0b110
print(~a) # -6 取反:-(a + 1)
print(a << 1) # 10 0b1010,左移一位
print(a >> 1) # 2 0b10,右移一位实际应用:如权限管理(每一位表示一个是否有权限的标志),或高效处理大量标志/配置。
示例代码:
# 每个位表示一个权限 0b1011,代表有权限1、2、4
READ = 1 << 0 # 0b0001
WRITE = 1 << 1 # 0b0010
DELETE = 1 << 2 # 0b0100
ADMIN = 1 << 3 # 0b1000
user_perm = READ | WRITE | ADMIN # 给用户分配读、写、管理员权限
# 检查是否有写权限
if user_perm & WRITE:
print("有写权限")
else:
print("无写权限")
# 增加删除权限
user_perm |= DELETE
# 撤销管理员权限
user_perm &= ~ADMIN
print(bin(user_perm)) # 查看当前权限的二进制表示补充:可以用 bin(x) 查看整数的二进制字符串表现。
print(bin(5)) # '0b101'9.7 项目开发要点 #
- 区分
/与//:统计平均值用/;页码、索引、整除场景用// int(浮点数)是截断:int(3.9)为 3;要四舍五入用round(3.9)再转 int,或直接用round(3.9)- 解析外部输入:
int(user_input)前验证是否为合法数字,并处理ValueError - ID、金额:大整数可直接运算;金额等业务更推荐用
Decimal避免浮点误差 - 位运算(
&、|、<<等)在权限标志、底层协议中偶尔出现