Python 核心编程[第五章]
0x00数字简介
数字的描述:标量存储、直接访问、不可变类型
包含类型:整型、长整型、布尔型、双精度浮点型、十进制浮点数、复数
1.赋值
var = xxx
2.更新
- 并不是真正的更新、只是改变了装数据的盒子,相当于新建。
3.删除
del var
0x01整型
1.布尔型
- 只有两个数值:True False
2.标准整型
- 在32位机器上编译取值范围为 -2147483648 ~ 2147483647(-231~231-1) 即 32 位整数,在 64 位上将是 64 位整型。并且支持八进制(0 开头)、十六进制(0x开头)等。
3.长整型
- Python 支持的长整型仅仅与机器支持的内存(虚拟)大小有关,当表达数据超过标准整型时可以使用长整型表示,通常标准整型后边添加 L / l 表示
4.整型和长整型统一
- 现在长整型与整型已经逐渐同一
0x02双精度浮点型
- Python 中的双精度类似 C 的 double 每个浮点型占 8 个字节,其中 52 位用于底,11 位用于指数,1 位用于符号,不过实际精度以来于机器架构和创建 Python 解释器的编译器。
- 支持正常浮点表示和科学计数法浮点表示
0x03复数
复数对象拥有数据属性,分别为该复数的虚部和实部。复数还拥有 conjugate 方法(获取共轭复数对象)。
复数的所有属性
属性 | 描述 |
---|---|
num.real | 返回该复数是不 |
num.image | 返回该复数虚部 |
num.conjugate() | 返回该复数的共轭复数 |
0x04操作符
1.混合模式操作符
关于 ‘+’ 号,Python 很多类型之间都可以同类型间相加,不同数字类型之间也可以相加,不过这个相加是先将一种操作类型转换为另一种操作类型(小范围转化为大范围,比如整数转化为浮点型)
2.标准类型操作符
第四章中的一些标准操作符都可以用于数值类型
3.算数操作符
- 支持单目: + - 正负号
- 双目:+ - * / % ** //
- 除法:
- 现在 Python 中的除法是我们日常认知中的除法,而不是 C 语言中的除法,现在可以用 // 符号表示整除。
- 取余:
- 整数取余:正常取余
- 复数取余:x-(math.floor((x/y).real)*y)
- 幂运算:
-
幂运算操作符比其左操作数的一元才足以符优先级低,比其右侧操作数的一元操作符的优先级高
即 -3 ** 2 == 9 2 ** -1 = 0.5
-
4.位操作符
- 支持的位操作运算:~ & | ^ << >>
- 处理规则:
- 负数会被当成正数的 2 进制补码处理。
- 左移和右移 N 位同等无溢出检查的 2 的 N 次幂运算:2 ** N
- 对于长整型来说,位操作符使用一种经修改的 2 进制补码形式,使得符号位可以可以无限向左扩展
- 优先级:~ 运算与数字单目操作符相同,大于左移右移的优先级低于加减法运算。与 或 异或优先级最低。
- 按优先级排序:~ << >> & ^ |
0x05内建函数和工厂函数
1.标准类型函数
- str()
- type()
2.数字型函数
- 转换工厂函数
- int()
- long()
- float()
- complex()
- bool()
- Python 2.3 开始,Python 标准数据类型添加了 Boolean 类型
- 功能函数
- abs():返回一个绝对值
- coerce():将参数一和参数二转换为同一类型然后返回一个元组
- divmod():返回一个包含商和余数的元组
- pow():**
- round() :用于浮点型的四舍五入。第二个参数可选保留小数位,如果没有则返回里所传数最接近的整数
3.仅用于整型的函数
- 进制转换函数
- hex()
- oct()
- bin()
- ASCII 转换函数
- ord()
- chr()
0x06其他数字类型
1.布尔"数"
尽管布尔型添加进 Python 但它实际上是整型的子类,对应值为 1 和 0。
布尔类型的概念
- 有两个永不变的值 True False
- 是整型的子类但是不可再被继承
- 没有 __nonzero __() 方法的对象的默认值是 True
- 对于值为零的任何数字、空集(空列表、空元素、空字典)Python 中的布尔值都是 False
- 在数学运算中 True False 分别对应 1 和 0
- 以前返回整型的大部分标准库和内建布尔型函数现在都返回布尔型
2.十进制浮点型
- 用于解决一些精度问题,导入 decimal 模块以便使用 Decimal 类
0x07相关模块
数字类型相关模块
模块 | 介绍 |
---|---|
decimal | 十进制浮点运算类 Decimal |
array | 搞笑数值数组(字符、整型、浮点型) |
math/cmath | 标准 C 库数学运算函数。常规数字运算在 match 模块,复数运算在 cmath 模块 |
operator | 数字操作符的函数实现 |
random | 多种伪随机数生成器 |
random 模块
randint() | 两个整型参数,返回二者之间的随机整数 |
randrange() | 接受和 range() 函数一样的参数,随机返回 range([start,] stop [,step]) 结果的一项 |
uniform() | 和 randint() 几乎一样,不过它返回的是二者之间的浮点型(不包括上限) |
random() | 类似 uniform,只不过下线恒为 0.0,上限恒为 1.0 |
choice() | 随机返回给定序列的一个元素 |