又是好久不见。
数据类型简介
尽管都是0和1的序列,但数据在计算机里的存储方式千差万别。我们考虑存储空间、字节大小、效率、容错性等因素,根据数据的不同,也会让计算机以不同的方式存储数据。这些方式的不同,就是各个数据类型的不同。
不同的编程语言都会对数据类型进行定义和分别。
Python自身有三大数据类型:整型(Integral)、浮点型(Float)和字符串(String)。整型和浮点型又分多个数据类型。Python内置的整型有整数(int
)和布尔型(bool
),自身提供的浮点型有浮点数(float
)、复数(complex
)和十进制数字(decimal.Decimal
)。
本章不涉及十进制数字类型,故本小节只讲整数、布尔型、浮点数、复数。
整数
Python所能表示的整数大小只受限于机器内存,而非固定数量的字节数。因此,在Python中,所有整数的数据类型都可以是int。这和一些把整数按长度分多个类型的语言(如C语言)不一样。
整数可以为负。
-1
241
0
124921947325891723957923572019348021849218423569213562391875621893764128734623185678123654617234782135461238571236587213652189752139572318591726482316521903498712359213875213957862163489218374
一般来说,整数是十进制。如果要使用其他进制,可以在数字前面加上0b
(二进制)、0o
(八进制,注意右边是字母o)、0x
(十六进制)。不区分大小写。
0b010101010101001010101010110
0O23555631
0x7e6a1f3
0X3e2A32F
输出的时候仍然是十进制,如上面的示例输出的结果为:
44733782
5168025
132555251
65184559
布尔型
布尔型的值有两个:True
和False
。一般被用于判断。大小写不可忽略。
True
相当于1
,False
相当于0
。
浮点数
浮点数是小数在Python中的表达方式之一。在Python中,浮点数默认为双精度的浮点数。
符合两个特点之一的数就会被解释器视为浮点数:
- 数中含有小数点。当小数点前面或后面没有数字(只能有一边没有数字)时,没有数字的一边即为0。
- 使用科学记数法表示的数字。a*10n(n必须为整数)在Python中表示为
aen
。e
不区分大小写。
如:
1.25
-315.13
2.0
2e4
9.8E-4
.8
3.
最后两个分别为0.8和3.0。
浮点数是不精确的,因为浮点数在计算机的特殊的存储方式和十进制和二进制的转换有时候会出现无限循环情况。感兴趣的可以看一下参考资料。因此,在涉及到精确运算(如财务计算)的时候,不要使用浮点数。
复数
复数是Python拥有的相比于其他编程语言来说非常特别的数据结构。对于a+bi的复数,在Python的格式为a+bj
,因为Python遵循工程传统。
复数的各项以浮点数的方式存储。如果虚部为0,则虚部要写出来。
1+2j
3j
2+0j
-54.34-57.21j
参考资料
除0.1节提到的之外,还有:
- 为什么说浮点数缺乏精确性? python中浮点数运算问题 - 知乎
https://www.zhihu.com/question/25457573/answer/109240086