数字简介
Python 数字 数据类型用于存储数值,它是不可改变类型,这就意味着如果改变 数字 数据类型的值,将重新分配内存空间。
所支持的类型
Python 支持四种不同的数值类型:
1.整型(Int)
python中的整型有几种类型:
布尔型
True 与 False 注意首字母大写!!
标准整型
Python的标准整型等价于C的(有符号)长整型(看看!)
一般以十进制表示,但也支持八和十六进制,其表示规定常规。
长整型
前面也提到过,python之中的长整型几乎没有范围限制,仅仅与计算机支持的虚拟内存有关。
长整型是整型数的超集,可表示极大的数,最后是一个大写或小写的L。(为了避免与数字1混淆,通常使用大写L)(注意:python3中已经没有长整型了)
2.双精度浮点型
Python中的浮点型类似于C中的double类型,是双精度浮点型。可直接用十进制或科学计数法表示(2.5e2 = 2.5 x 10的2 = 250)每个占8个字节。
采用标准IEEE754号规范,52个位用于表示底,11个用于表示指数,剩下一个表示符号。
3.复数
对没错我们支持复数!
复数由实数部分和虚数部分构成,
可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都支持浮点型。
复数对象拥有数据属性。三个内建函数:
num.real 返回实部
num.imag 返回虚部
num.conjugate() 返回共轭复数
操作符
不同数据类型的数
支持不同类型之间的数进行计算,会自己做强制类型转换,转化规则同C:
- 如果有一个数是复数,则另一个操作数被转换为复数;
- 否则,如果有一个是浮点型,则另一个操作数被转换为浮点型;
- 否则,如果有一个是长整型,则另一个操作数被转换为长整型;
- 否则,俩都是普通整型,无需转换。
另外有强制类型转换函数:coerce(),其参数有两个,可按上述规则转换数:
>>> coerce(1.3,134L)
(1.3, 134.0)
>>>
其余类型转换:
int(x [,base ]) 将x转换为一个整数
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串
特殊的算术操作符:
除法:
在python中讲除法,要有三个概念:
- 传统除法
- 地板除法
- 真正除法
地板除法:
这个在之前学C的时候还吃过不少亏。
所谓地板除法,即取比商小的最大整型作为除法运算的结果。
比如:5除以2等于2.5,但在地板除法中会取2。
在C++中,这是对两个操作数都为整型时做的事。
真正除法:
也就是正常的除法,5除以2等于2.5,那就是2.5。
我们都知道之前想这样的话,5和2至少有一个得写成浮点型数,否则只会得到2
传统除法:
也就是C和早期python使用的方式。其原理就是,当两个操作数均为整型时采取地板除,有一个数是浮点才采取真正的除法。是两个方法的组合
python采取的除法
Python中的除法运算有两个符号:“/” 和 “//”,
在2.7版本中,/ 时采取传统除法,//时采取地板除。
在3.6版本中,/ 时采取真正的除法,//时为地板除。
幂运算:
幂运算操作符和一元操作符之间的优先级关系比较特别:
- 幂运算操作符比 左 侧操作数的一元操作符优先级 高 ;
- 幂运算操作符比 右 侧操作数的一元操作符优先级 低 ;
>>> -3**2 #先执行幂运算再取负;
-9
>>> 4**-.5 #先执行右边的复数再进行幂运算
0.5
>>> 4**-1
0.25
位运算
先补个课:
了解一下位运算的意义。
Python的整型数据支持标准的位运算:取反(~)、按位与(&)、或(|)、异或(^),左右移(<<和>>)
内建函数和工厂函数因为概念还有一丝模糊,所以不冒昧抛出。