导航菜单

  • 1.Python介绍
  • 2.Python解释器
  • 3.安装Python
  • 4.VSCode开发Python
  • 5.print
  • 6.进制
  • 7.编码
  • 8.Unicode2UTF8
  • 9.整数类型
  • 10.字符串类型
  • 11.布尔类型
  • 12.变量与内存
  • 13.浮点类型
  • 14.注释
  • 15.if条件
  • 16.while循环
  • 17.运算符
  • 18.输入
  • 19.列表
  • 20.元组
  • 21.集合
  • 22.字典
  • 23.for循环
  • 9.1 整型的基本概念
  • 9.2 类型转换
  • 9.3 常用运算
  • 9.4 常用内置函数
  • 9.5 金额等业务
  • 9.6 位运算
  • 9.7 项目开发要点

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   # 10

9.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.3

Decimal 支持所有常见运算,与 int/float 相比,它的加法、减法、乘法、除法不会引入二进制精度误差,非常适合金融和财务场景。此外:

  • 金额建议统一用「分」为单位存 int,从接口/数据库存储和传递都是整数,避免误差。
  • 若必须带小数(如汇率、加权平均等),用 Decimal 存储、运算并格式化输出。

常见金额格式化可用:

amt = Decimal("1234.5")
print("{:.2f}".format(amt))  # 1234.50

9.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 项目开发要点 #

  1. 区分 / 与 //:统计平均值用 /;页码、索引、整除场景用 //
  2. int(浮点数) 是截断:int(3.9) 为 3;要四舍五入用 round(3.9) 再转 int,或直接用 round(3.9)
  3. 解析外部输入:int(user_input) 前验证是否为合法数字,并处理 ValueError
  4. ID、金额:大整数可直接运算;金额等业务更推荐用 Decimal 避免浮点误差
  5. 位运算(&、|、<< 等)在权限标志、底层协议中偶尔出现
← 上一节 8.Unicode2UTF8 下一节 10.字符串类型 →

访问验证

请输入访问令牌

Token不正确,请重新输入