一、整数
Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。
二、浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x10^9和12.3x10^8是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差。浮点数运算存在不确定尾数,运算的结果不一定精确。因为计算机内存再大,也无法精确表示出无限循环小数,比如 0.1 换成二进制表示就是无限循环小数。
Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数,但是整数和浮点数混合运算的结果就变成浮点数了:
1 | print(1 + 2) # ==> 整数 3 |
Python整数除法除不尽的结果是浮点类型,同时提供了整数除“//”实现余数直接丢掉。Python提供了一个求余的运算%可以计算余数:
1 | print(11 // 3) # ==> 3 |
三、字符串
字符串是以'或"括起来的任意文本,比如'abc',"xyz"等等。请注意,'或"本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。(注意:Python不区分单引号和双引号)
四、布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值,也可以通过布尔运算计算出来。
- and运算(与运算),只有所有都为True,and运算结果才是True。
- or运算(或运算),只要其中有一个为True,or运算结果就是True。
- not运算(非运算),把True变成False,False变成 True。
在Python中,布尔类型还可以与其他数据类型做and、or和not运算:
1 | a = True |
布尔类型和其他类型运算的结果可能不是布尔类型,因为Python把0、空字符串’’和None看成False,其他数值和非空字符串都看成True,所以True and 'a=T'计算结果是'a=T',继续计算'a=T' or 'a=F'计算结果还是'a=T'。
要解释上述结果,又涉及到and和or运算的一条重要法则:短路计算。
- 在计算a and b时,如果a是False,则根据与运算法则,整个结果必定为 False,因此返回a;如果a是True,则整个计算结果必定取决与b,因此返回b。
- 在计算a or b时,如果a是True,则根据或运算法则,整个计算结果必定为 True,因此返回a;如果a是False,则整个计算结果必定取决于b,因此返回 b。
Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。需要注意的是,字典和集合类型不能进行布尔测试,但是上述代码第三行在进行布尔运算时,会产生误导结果。
五、空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
此外,Python还提供了复数类型、列表、字典等多种数据类型,还允许创建自定义数据类型。