Python数字类型是 非序列对象,不可迭代对象,不可变性
Python数字类型包括:
- 整数和浮点数
- 复数
- 固定精度的十进制
- 有理分数
- 集合
- 布尔类型
- 无穷的整数精度
- 各种数字内置函数和模块
数字常量
基本的数字常量 表格
数字 | 常量 |
1234, -24, 0, 99999999999999 | 整数(无穷大小) |
1.23, 1., 3.14e-10, 4E210, 4.0e+210 | 浮点数 |
0o177, 0x9ff, 0b101010 | 八进制,十六进制, 二进制 |
3+4j, 3.04.0j, 3J | 复数常量 |
内置数学工具和扩展
表达式操作符
+、 -、 *、 /、 >>、 **、 & 等。
内置数学函数
pow、 abs、 round、 int、 hex、 bin 等。
公用模块
random、 math 等。
Python表达式操作符
python表达式操作符及程序(越靠后优先级越高)
操作符 | 描述 |
yield x | 生成器函数发送协议 |
lambda args: expression | 生成匿名函数 |
x if y else z | 三元选择表达式 |
x or y | 逻辑或 (只有x为假,才会计算y ,Python规定逻辑运算只允许运行表达式,不允许赋值运算,少了一些坑) |
x and y | 逻辑与(只有x为真,才会运算y) |
not x | 逻辑非 |
x in y, x not in y | 成员关系(可迭代对象,集合) |
x is y, x is not y | 对象实体测试 |
x < y, x <= y, x > y, x >= y x == y, x != y | 大小比较,集合子集和超集值相等性操作符 |
x | y | 位或,集合并集 |
x ^ y | 位异或, 集合对称差 |
x & y | 位与, 集合交集 |
x << y, x >> y | 左移或右移 y 位 |
x + y, x - y | 加法/合并,减法、集合差集 |
x * y, x % y, x / y , x // y | 乘法/重复, 余数/格式化, 除法, 整除或floor除法 |
-x , +x | 一元减法, 识别 |
~x | 按位求补(取反) |
x ** y | 幂运算 |
x[i] | 索引 |
x[i:j:k] | 分片 |
x(...) | 调用 |
x.attr | 属性引用 |
(...) | 元组,表达式,生成器表达式 |
[...] | 列表,列表解析 |
{...} | 字典、集合和字典解析 |
混合类型自动升级
在数字类型的表达式中,自动升级为复制的数据类型。Python是这样划分数字类型的复制度:整数比浮点数简单,浮点数比复数
简单。所以一个整数与浮点数混合运算时,整数首先升级转为浮点数,之后通过浮点数的运算法则达到浮点数结果。
>>> 2 + 1.0
3.0
在Python2 中 字符类型永远比数字类型大。
运算符重载
尽管我们目前把注意力集中在内置的数字类型上,要留心所有的Python操作符可以通过Python的类或c扩展类型被重载(即实现),让它也能工作于你所创建的对象中。例如,用类编写的对象代码也许可以使用+表达式做加法或连接,以及使用[i]表达式进索引等。
再者,Python自身自动重载某些操作符,能够根据所处理的内置对象的类型而执行不同的操作,例如,“+”操作符应用于数字时是在做加法,而用于字符串或列表这样的序列对象时是在做合并运算。实际上,“+”应用在定义的类的对象上可以进行任何运算,这种特性通常叫做多态。
数字显示的格式
str 和 repr 显示格式
repr(也是默认的交互模式回显)产生的结果看起来就好像它们是代码。
str(也就是打印语句)转变为一种通常对用户更加友好的格式。
一些对象两种方式都有:str用于一般用途,repr用于额外的细节。
范围测试
有趣的是,Python还允许我们把多个比较连续起来执行范围测试。连续的比较式更大的布尔表达式的缩写。简而言之,Pyton允许我们把大小比较测试连接起来1,成为诸如范围测试的连续比较。例如,表达式(A<B<c)测试B是否在A和C之间;他等同于布尔测试(A<Band B < C),但更容易辨识(和录入)。例如:
>>> 1 == 2 < 3 # 等同于 1 == 2 and 2 < 3
False
除法:传统除法、Floor除法和真除法
传统除法和真除法: x / y
在Python2 中,对于浮点数会保留小数部分,在Python3中将会变成真除法(无论任何类型都会保留小数部分)
>>> 1 / 1
1.0
Floor除法: x // y
// 执行floor除法,它截除掉余数向下取舍并且针对整数操作返回一个整数,如果有任何一个操作数是浮点类型,则返回一个浮点数。
>>> 5 // 2
2
>>> 5.0 // 2
2.0
>>> -5 // 2
-3
>>> -5 // 2
-3.0
舍弃余数 math.trunc
// 是截断除法,更准确的说法是Floor除法,余数是根据 x y 纵轴 向下取舍的。有时想直接丢掉余数,得到一个整数,可以用这个办法。
>>> math.trunc(2.5)
2
>>> math.trunc( -5.0 / 2)
-2
十六进制,八进制,二进制
进制标示符:0x, 0o, 0b (十六, 八,二 进制)
相关函数 hex , oct, bin, int, ord(转为ASCII码表)