PS:【笔记+代码+图片】在GitHub上持续更新,欢迎star:https://github.com/gdouchufu/Core-Python-Programming
本章大纲
介绍Python支持的多种数字类型,包括:整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。介绍和数字相关的运算符和函数。
知识点
5.1 布尔型
从Python2.3开始支持bool,取值范围:True、False
5.2 标准整型
在32位机器上,标准整数类型的取值范围:-2的31次方 ~ 2的31次方-1
- Python标准整数类型等价于C语言的(有符号)长整型。
- 八进制整数以数字 “0” 开头,十六进制整数以 “0x” 或 “0X” 开头
5.3 长整型
- Python的长整数类型能表达的数值,仅与机器支持的(虚拟)内存大小有关。
- 在一个整数值后面加个大写L,表示是长整数。
- 必要时整型会自动转换为长整型。
5.4 双精度浮点数
- 每个浮点数占8个字节
- 类似C语言中的double类型
- 浮点数值通常都有一个小数点和一个可选的后缀e,eg:
9.384e-23
5.5 复数
- Python1.4开始支持复数
- 虚数的表示: real+imagj,eg:
6.23+1.5j
复数属性:
- num.real:复数的实部
- num.imag:复数的虚部
- num.conjugate():返回该复数的共轭复数
5.6 数值类型转换
不同数据类型之间在运算之前,Python内部会将两个操作数转换为同一数据类型(强制转换)。
不同数据类型转换基本原则:整数转换为浮点数,非复数转换为复数。
数值类型强制转换的流程:
使用内建函数coerce()
,对某种数据类型进行特殊类型转换。
5.7 运算符
- / :除法运算,如果两个数都是整数则地板除,否则执行真正的除法(未来版本Python中除法运算的标准行为:不管操作数是整数还是浮点数,除法运算总是返回真实的商。现阶段通过执行
from __future__ import division
指令可实现真正的除法) - //:地板除(向下取整)
- % :取余,对于浮点数结果为:
x - (math.floor(x/y) * y)
- **:幂运算,操作符比其左侧操作数的一元操作符优先级高,比右侧操作数的一元操作符的优先级低(右边的是老大)
-3 ** 2
# 优先级高于左侧的 -4.0 ** -1.0
# 优先级低于右侧的 -
- 位运算符:取反优先级最高,左移和右移次之,与、或、异或最低;
5.8 数字类型函数
5.8.1 转换工厂函数
int(4.25555)
# 4long(42)
# 42Lfloat(4)
# 4.0complex(2.3e-10, 45.3e4)
# (2.3e-10+453000j)
5.8.2 功能函数
- abs(num):返回给定参数的绝对值。eg:
abs(-1)
# 1 - coerce(num1,num2):返回一个包含类型转换完毕的两个数值元素的元组。eg:
coerce(1.23-41j, 134L)
# ((1.23-41j), (134+0j)) - divmod(num1,num2):结合除法运算和取余运算, 返回一个包含商和余数的元组。eg:
divmod(10,3)
# (3, 1) - pow(num1,num2,mod=1):指数运算,eg:
pow(2,3)
。如果提供 mod参数,则再对mod进行取余运算 - round(flt, ndig=0) 接受一个浮点数flt并对其四舍五入,保存ndig位小数。 若不提供ndig参数,则默认小数点后0位
5.8.3 仅用于整数的函数
5.9 其他数字类型
5.9.1 布尔“数”
- 有两个永不改变的值 True 或 False。
- 布尔型是整型的子类,但是不能再被继承而生成它的子类。
- 没有
__nonzero__()
方法的对象的默认值是 True。 - 对于值为零的任何数字或空集(空列表、空元组和空字典等)在 Python 中的布尔值都 是 False。
- 在数学运算中,Boolean 值的 True 和 False 分别对应于 1 和 0。
- 以前返回整数的大部分标准库函数和内建布尔型函数现在返回布尔型。
- True 和 False 现在都不是关键字,但是在 Python 将来的版本中会是。
5.9.2 十进制浮点数 Decimal
from decimal import Decimal
dec = Decimal('.1')
result = dec + Decimal(