- Python的数字类型
在Python中,数字并不是一个真正的对象类型,而是一组类似类型的分类。Python不仅支持通常的数字类型,而且能够通过常量区直接创建数字 以及处理数字的表达式。此外,Python为更高级的工作提供了很多高级数字编程支持和对象。Python数字类型的完整工具包括:
- 整数和浮点数
- 复数
- 固定精度的十进制数
- 有理分数
- 集合
- 布尔类型
- 无穷的整数精度
- 各种数字内置函数和模块
- 数字常量
数字 常量 1234,-24,0,9999 整数 1.23,1.,3.14e-10,4E210,4.0e+210 浮点数 0o177,0x9ff,0b101010 八进制,十六进制和二进制常量 3+4j,3.0+4.0j,3j 复数常量 - 整数和浮点常量
整数以十进制数字的字符串写法出现。浮点带一个小数点,也可以加上一个科学技术标志e或者E。如果编写一个带有小数点或者幂的数字,Python会将它编程一个浮点数对象,并且当这个对象再用表达式时,将启用浮点数而不是整数的运算法则。
- 二进制,八进制,十六进制常量
整数可以编写十进制,十六进制,八进制和二进制形式。十六进制以0x或者0X开头,后面接十六进制的数字0-9和A-F。十六进制的数字编写成大写 或者小写都可以。八进制数常量以数字0o或者0O开头,后面接数字0-7构成的字符串。二进制常量以0b或者0B开头,后面跟着数字0-1
注意所有这些常量在程序代码中都产生一个整数对象,它们仅仅是特定值得不同语法表示而已,内置函数hex(l),oct(l)和bin(l)把一个整数转换为这三种进制表示的字符串,并且int(str,base)根据每个给定的进制把一个运行时字符串转换为一个整数。
- 复数
Python的复数常量写成实部+虚部的写法,这里的虚部是以j或者J结尾。其中,实部从技术上讲可有可无,所以可能会单独表示虚部。从内部看,复 数都是通过一对浮点数来表示的,但是对复数的所有数字操作都会按照复数的运算法则来进行。也可以通过内置函数complex(real,imag)来创建 复数。
- 编写其它数字类型
对于没有包含的其它的,更高级的数字类型,其中的一些通过调用导入的模块中的函数来创建,其它的一些拥有他们自己的常量语法,例如集合。
- 整数和浮点常量
- 内置数学工具和扩展
除了内置数学常量之外,Python还提供了一系列处理数字对象的工具:
- 表达式操作符
+,-,/,>>,*,&等
- 内置数学函数
pow,abs,round,int,hex,bin等
- 公共模块
random,math等
尽管数字主要通过表达式,内置函数和模块来处理,它们如今也拥有了很多特定于类型的方法。例如浮点数拥有一个as_integer_ration, 它对于分数数字类型很有用,还有一个is_integer方法可以册书数字是否是一个整数。整数有各种属性,包括一个bit_length方法,它给出表 示对象的值所必须的位数。此外,集合即像一些集合一样也像一些数字一样,它支持这两者的方法和表达式。
- 表达式操作符
- Python表达式操作符
表达式是大多数数字类型最基本的工具。
操作符 描述 yield x 生成器函数发送协议 lambda args:expression 生成匿名函数 x if y else z 三元选择表达式 x or y 逻辑或,只有x为假,才会计算y 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 左移或者右移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 属性引用 (…) 元组,表达式,生成器表达式 […] 列表,列表解析 {…} 字典,集合,集合和字典解析 列表语法[…]用于表示列表常量或列表解析表达式。后者是执行隐形循环,把表达式的结构收集到新的列表中。
元组(…)语法表示元组和表达式,以及生成器表达式,后者是产生所需要结构的列表解析的一种形式,而不是构建一个最终的列表。
字典{…}语法表示字典常量,Python3中可以表示集合常量以及字典和集合解析。
yield返回生成器中的send(..)参数,三元表达式是一个多行if语句的缩写形式。如果yield不是单独地位于一条赋值语句的右边的话,需要用圆括号。
比较操作符可以连续使用,x < y < z的结果与x < y and y < x相同。
分片表达式x[I:J:K]等同于用一个分片对象索引x[slice(I,J,K)]
在Python3中,非数字的混合类型的大小不允许比较,字典的大小也不支持,尽管支持相等性测试。比较sorted(dict.items())是一种可能的替代。
- 混合操作所遵循的操作符优先级
- 上表中,就是根据操作符的优先级来排序的,操作符越靠后优先级越高。位于同一行的表达式在自合的时候通常从左到右组合(除了幂运算,它是从右向左组合的,还有比较运算,是从左到右连接的)。
- 括号分组的子表达式会超越Python的优先级规则,Python总是会先计算括号中的表达式,然后再将结果用在整个表达式中。
- 混合类型自动升级。例如一个整数与一个浮点数相加,等到一个浮点数结果。在一个混合类型的表达式中,Python会首先将被操作的对象转换成其中最 复杂的操作对象的类型,然后再对相同类型的操作对象进行数学运算。(这点与c类似)当然,你也可以通过调用内置函数强制进行转换
In [1]: int(3.1415) Out[1]: 3 In [2]: float(3) Out[2]: 3.0
- 运算符重载
所有的Python操作符可以通过Python的类或者C扩展类型被重载(即实现),让它也能工作于你创建的对象中。例如,用类编写的对象代码也许 可以用+表达式做加法和连接,以及使用[i]表达式进行索引等。再者,Python自动重载了某些操作符,能够根据所处理的内置对象的类型而执行不同的操 作。例如,+操作符应用于数字做加法运算,而用于字符串或列表这样的序列对象时是在做合并运算。实际上,+应用在定义的类的对象上可以进行任何运算。这种 特性称为多态!这个术语指操作的意义取决于所操作的对象的类型。
分类: Python3
0 条评论