Python学习笔记(4)——数据类型

这一章将介绍Python的各种数据类型。

本文仅供个人记录和复习,不用于其他用途

整数

类似于C语言,Python也有整型数,例如:1100-1000等等。当然,使用十六进制表示也行:0xff000xa5b4c3d2

浮点数

和C语言差不多,浮点数的意思就是可以浮动小数点的数,因为数字较大时,一般使用科学计数法来表示:1.23e912.3e8。其实这两个数是一样的,只不过因为小数点的位置,所以看起来有点不同。

我们知道,C语言中有单精度和双精度浮点数,但哪怕是双精度浮点数也只能够精确小数点后十几位。所以,切不可用浮点数来判断是否相等,因为我们无法保证它是否精确。事实上,0.99999…或者1.000…经常被看做是1,而刚刚好等于1的浮点数其实不怎么常见。总之记住一句话,整数永远是精确的,浮点数可能会四舍五入。

字符串

字符串是用括起来的文本,如果我们想让字符串包含,那么可以用

>>> print "I'm Chinese!"
I'm Chinese!

当然,如果你两个符号都想输出,那么可以使用转义字符:

>>> print 'I\'m \"Chinese\"'
I'm "Chinese"

还有其他诸如:\n\t\\都是可以用的。当然,如果有很多要转义的字符,为了简化代码,我们还可以使用r’’,这个表示‘’中的字符全都不转义,比如:

>>> print r'\n\t\\'
\n\t\\

如果要输入多行内容,可以使用‘’’…’’’

>>> print '''line1
... line2
... line3'''
line1
line2
line3

注意,输入‘’’line1并按下回车后,就会变成,表示你可以继续输入,一直到你打上‘’’并回车为止。当然,在前面加上r也是可以的。

布尔值

布尔值使用TrueFalse表示:

>>> True
True
>>> False
False
>>> 3 > 2
True
>>> 3 < 2
False

当然,布尔值还可以用andornot来运算。and只有当都为True时,结果才为True

>>> True and True
True
>>> True and False
False
>>> 5 > 3 and 6 > 1
True

or只要有一个为True,那么结果就是True

>>> True or True
True
>>> True or False
True
>>> False or False
False

not是单目运算符,相当于非运算,对结果取反:

>>> not True
False
>>> not False
True

空值

空值是None,但不能理解为0

变量

变量不需要指定类型,与C/C++不同,一个变量名就可以创建一个变量:

1
2
3
4
5
6
7
8
# a是整数
a = 1
# ch是字符串
ch = 'Hello'
# charge是布尔值
charge = True

甚至于下面这样:

>>> a = 1
>>> print a
>>> a = 'Hello'
>>> print a
1
Hello

Python不是强类型语言,所以我们无需指定类型。变量其实可以看做是指针,例如:

>>> a = 'Hello'
>>> b = a
>>> a = 'World'
>>> print b,a
Hello World

也就是说,计算机创建一个字符串‘Hello’,然后创建一个变量a来指向它,随后又创建b来指向a的内容。这个时候再创建字符串‘World’,然后让a指向它。所谓的b = a并不是b指向a,而是指向它的内容,熟悉指针便能理解这个概念。

常量

常量一般用大写表示,但是不代表常量不能被更改。Python没有机制来防止常量被改变,所以我们只能人为规定大写的变量为常量,并且不会去改变它的值。

除法

类似C/C++,除法都是取整,所以得到的结果永远是精确的整数(可能和你预期结果不符,但绝对是精确的)。如果你需要得到小数,那么就需要把其中的一个数转换成浮点数。

>>> 10.0 / 3
3.3333333333333335
>>> 10 / 3
3
>>> 10 % 3
1

总结

所有的数据都可以看做是对象,变量只是用来指向这些对象,赋值操作是把变量和数据连接起来。