Python数据类型之数字

数字类型(integer)

整型(int)

在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

长整型(long)

和C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。

1
2
3
4
# 在python2.x 中(python3.x中没有长整型的概念):
>>> num=2L
>>> type(num)
<type 'long'>

浮点型(float)

浮点数用来处理实数,也就是带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

复数(complex)

复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。

1
2
3
4
5
>>> x=1-2j
>>> x.real
1.0
>>> x.imag
-2.0

进制转换

1
2
3
4
bin(var) # 把变量转换为2进制
oct(var) # 把变量转换为8进制
int(var) # 把变量转换为10进制
hex(var) # 把变量转换为16进制

小知识点

  • Python中存在小数字池:-5 ~ 256,即[-5,257]

Python对小整数的定义是[-5,257]这些整数对象是提前建立好的,不会被垃圾回收。在一个Python的程序中,所有位于这个范围内的整数使用的都是同一个对象。
同理,单个字母也是这样的。

在一般情况下当变量被赋值后,内存和变量的关系如下:

1
2
3
# 方式一
n1 = 123
n2 = 123

1
2
3
# 方式二
n1 = 123
n2 = n1

由于python内的优化机制,不论是2.x还是3.x都存在,在-5~257之间的数,如果使用第一种赋值方式,那么他们依然属于同一块内存

1
print(id(n1)) # 查看变量的内存地址