飞翔飞翔
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
  • 数据库

    • SQL教程
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON教程
  • 工具

    • Markdown指南
  • Git

    • GitFlow
  • Quartz

    • Quartz教程
  • Java

    • Java设计模式
  • 缓存

    • Redis教程
联系
阿里云
  • 学习路径
  • 第1章 Python简介

    • Python是什么
    • 安装与运行
    • 交互式解释器
    • 注释与编码规范
  • 第2章 变量与数据类型

    • 变量与对象
    • 整数 int
    • 浮点数 float
    • 复数 complex
    • 布尔值 bool
    • 字符串 str
    • 空值 None
    • 类型转换
  • 第3章 运算符与表达式

    • 算术运算符
    • 比较运算符
    • 赋值运算符
    • 逻辑运算符
    • 位运算符
    • 身份与成员运算符
    • 海象运算符
    • 运算符优先级
  • 第4章 流程控制

    • if 语句
    • if-else 语句
    • if-elif-else 语句
    • match-case 语句
    • 条件表达式(三元运算符)
    • while 循环
    • for 循环
    • range 函数
    • break 与 continue
    • 循环的 else 子句
    • pass 语句
  • 第5章 数据结构

    • 列表创建与索引
    • 列表方法
    • 列表推导式
    • 元组
    • 序列解包
    • 集合
    • 字典创建与访问
    • 字典方法
    • 字典推导式
    • range 对象
  • 第6章 函数

    • 定义函数
    • 位置参数与关键字参数
    • 默认参数
    • 可变参数
    • 解包实参
    • 函数返回值
    • lambda 表达式
    • 文档字符串与注解
    • 作用域与命名空间
    • global 与 nonlocal
  • 第7章 模块与包

    • 模块导入
    • 模块搜索路径
    • 包与相对导入
    • 标准库概览
  • 第8章 文件与输入输出

    • 文件读写
    • 上下文管理器
    • 字符串格式化
    • JSON 与 CSV
  • 第9章 面向对象

    • 类与对象
    • 方法
    • 实例变量与类变量
    • 私有变量
    • 继承
    • 多重继承
    • 魔术方法
    • 属性装饰器
    • 数据类 dataclass
  • 第10章 异常处理

    • 语法错误与异常
    • try-except
    • 异常链与 raise
    • 清理操作
    • 自定义异常
  • 第11章 迭代器与生成器

    • 迭代器协议
    • 生成器
    • 生成器表达式
    • 迭代工具
  • 第12章 高级特性

    • 装饰器
    • 函数式编程
  • 第13章 工程实践

    • 测试与调试
    • 代码质量
    • 虚拟环境

整数 int

Python 的 int 类型表示任意精度的整数,没有 C 语言中 int 的溢出问题。无论是计数还是天文数字,int 都能精确表示。

创建整数

最直接的方式是书写整数字面量:

age = 25
year = 2024
count = 0
negative = -7

也可以通过 int() 构造函数从其他类型转换:

print(int(3.7))      # 3,向零取整
print(int(-3.7))     # -3,向零取整

int() 不接受空字符串或非法格式,否则会抛出 ValueError:

print(int(""))       # ValueError: invalid literal for int()
print(int("3.14"))   # ValueError,含小数点不能直接转
print(int("abc"))    # ValueError

进制表示

Python 支持四种进制书写整数,输出时统一显示为十进制:

# 二进制:前缀 0b 或 0B
binary = 0b1010
print(binary)        # 10

# 八进制:前缀 0o 或 0O(数字零加字母 o)
octal = 0o17
print(octal)         # 15

# 十六进制:前缀 0x 或 0X
hexadecimal = 0xFF
print(hexadecimal)   # 255

# 十进制:无前缀
decimal = 255
print(decimal)       # 255

注意:Python 3 不再支持 0777 这种前导零表示八进数的写法,必须写 0o777,否则报语法错误。

int() 还可以按指定进制解析字符串:

print(int("1010", 2))    # 10
print(int("FF", 16))     # 255
print(int("z", 36))      # 35,支持 2-36 进制
print(int("0b1010", 0))  # 10,前缀 0 表示自动推断进制

下划线分隔符

从 Python 3.6 起,整数中允许使用下划线 _ 作为视觉分隔符,提升大数字可读性:

million = 1_000_000
binary_mask = 0b1111_0000_1111
hex_address = 0xFF_FF

print(million)       # 1000000
print(binary_mask)   # 3855

下划线可以放在任意数字之间,但不能在开头、结尾,也不能连续出现:

# 合法
a = 1_2_3_4
b = 1_000

# 非法
# c = _1000        # SyntaxError,_1000 被当作变量名
# d = 1000_        # SyntaxError
# e = 1__000       # SyntaxError

无限精度

Python 的 int 采用变长存储,理论上只受可用内存限制:

# 计算 2 的 1000 次方
huge = 2 ** 1000
print(len(str(huge)))   # 302 位数字

# 大整数运算依然精确
print(10 ** 100 + 1 - 10 ** 100)  # 1

对比浮点数,大整数不会丢失精度:

print(10 ** 20 + 1 == 10 ** 20)        # False,整数精确
print(1e20 + 1 == 1e20)                # True,float 精度不足

常用运算

整数支持完整的算术运算集:

print(17 + 3)        # 20,加法
print(17 - 3)        # 14,减法
print(17 * 3)        # 51,乘法
print(17 / 3)        # 5.666...,真除法,结果总是 float
print(17 // 3)       # 5,地板除,向下取整
print(17 % 3)        # 2,取余
print(17 ** 3)       # 4913,幂运算
print(-17 // 3)      # -6,向负无穷取整
print(-17 % 3)       # 1,余数与除数同号

地板除 // 和取余 % 满足恒等式 a == (a // b) * b + a % b。对于负数,结果可能出乎直觉:

print(-7 // 2)       # -4
print(-7 % 2)        # 1
print((-7 // 2) * 2 + (-7 % 2))  # -7,验证恒等式

位运算将整数视为二进制补码:

print(5 & 3)         # 1,按位与
print(5 | 3)         # 7,按位或
print(5 ^ 3)         # 6,按位异或
print(~5)            # -6,按位取反
print(5 << 1)        # 10,左移乘 2
print(5 >> 1)        # 2,右移除 2

边界与特殊情况

零:0 在布尔上下文中为假值,但 bool(-1) 为 True(非零即真)。

前导零陷阱:Python 3 不再支持 0777 这种无前缀八进制写法,必须写 0o777,否则报 SyntaxError。

布尔是整数的子类:

print(isinstance(True, int))   # True
print(True + True)             # 2
print(1 == True)               # True
print(1 is True)               # False,值相等但身份不同

除零错误:5 // 0 和 5 % 0 均抛出 ZeroDivisionError。

大整数的性能:虽然无限精度,但位数越多运算越慢。日常无需担心,处理密码学级别的大数时才需考虑优化。

整数是 Python 中最基础的数据类型之一。掌握进制表示、地板除行为和无限精度特性,能避免许多常见错误。

上一页
变量与对象
下一页
浮点数 float