2.1 常量和简单数据类型

先举一些常量(Literal Constants)的例子,例如,5和1.23这样的数字常量,或者是如“这是一串文本”或“This is a string”这样的字符串常量。

之所以称这些数据为常量,是因为我们使用的就是它字面意义上(Literal)的值或是内容。不管在哪种应用场景中,数字2总是表示它本身的意义而不可能有其他的含义,所以它就是一个常量,因为它的值不能被改变。

下面通过介绍不同类型的常量,来介绍Python中使用的基本数据类型。

2.1.1 数字

常见的数字主要有3种类型——整数(Integers).浮点数(Floats,也称实数)与复数(Complex)

例如,2或者100都是整数,即没有小数点,也没有分数的表示形式。整数有下列表示方法。

(1)十进制整数:如1、100、12345等。

(2)十六进制整数:以0X开头,X可以是大写或小写,如0X10、0x5F、0xABCD等。

(3)八进制整数:以0O开头,O可以是大写或小写,如0o12、0o55、0O77等。

(4)二进制整数:以0B开头,B可以是大写或小写,如0B111、0b101、0b1111等。

整数类型的数据对象不受数据位数的限制,只受可用内存大小的限制。

浮点数(Floating Point Numbers,在英文中也会简写为floats)的例子是3.23或52.3E-4。其中,E表示10的幂。在这里,52.3E-4表示52.3*10-4

除了整数和浮点数,Python还考虑到了复数的表示方式,复数是由实部和虚部组合在一起构成的数。例如,3+4j、3.1+4.1j,其中加号左边的数为实部,加号右边的为虚部,用后缀j表示。

2.1.2 True和False

和现实生活一样,计算机中也有表示对和错、真和假这样的逻辑常量,它们就True和False,正如字面上的意思,True表示真,用来表示某个命题是正确的,False表示假,用来表示某个命题是错误的。请记住,计算机中是没有半对半错的概念的,非假即真,一定是这样的!

2.1.3 字符串

一串字符串(String)就是一组字符(Characters)序列(Sequence)。基本上,可以把字符串理解成一串词语的组合,可以是任何你能想到的字符所进行的随意组合。

字符串

将会在几乎所有的Python程序中使用字符串,所以请务必关注以下细节。

(1)单引号

可以使用单引号来指定字符串,例如,'将字符串这样框进来'或'Quote me on this'。

所有引号内的字符,包括各种特殊字符,诸如空格与制表符,都将按原样保留。

(2)双引号

被双引号包括的字符串和被单引号括起的字符串的工作机制完全相同。例如,"你的名字是?"或"What's your name?"。

(3)三引号

甚至还可以使用3个引号——"""或'''来指定多行字符串,因此,可以在三引号中随意换行,而且可以在三引号之间自由地使用单引号与双引号。例如:

''' 这是一段多行字符串。这是它的第一行。 
This is the second line. 
"What's your name?," I asked. 
He said "Bond, James Bond." 
'''

(4)转义字符

想象一下,如果希望生成一串包含单引号(')的字符串,应该如何指定这串字符串?例如,想要的字符串是What's your name?。不能指定'What's your name?',因为这会使Python对于何处是字符串的开始、何处又是结束而感到困惑。所以,必须指定这个单引号不代表这串字符串的结尾。这可以通过转义字符(Escape Sequence)来实现。在Python中通过\来表示一个转义字符。现在,可以将字符串指定为'What\'s your name?'。

另一种指定这一特别的字符串的方式为:"What's your name?",同样,如果需要在字符串中使用双引号,亦可以使用单引号把字符串包含起来。当然,必须在使用双引号括起的字符串中对字符串内的双引号使用转义序列。最后,如果需要在字符串中表示\,必须使用转义序列\\来指定反斜杠本身。

如果想指定一串双行字符串该怎么办?一种方式即使用如前所述的三引号字符串,或者使用一个表示新一行的转义序列——\n来表示新一行的开始。例如:

'This is the first line\nThis is the second line' 

Python中常见的转义字符如表2-1所示。

表2-1 Python中的常见转义字符

需要注意的是,字符串末尾的反斜杠表示字符串将在下一行继续,但不会添加新的一行。例如:

"This is the first sentence. \ 
This is the second sentence." 

相当于

"This is the first sentence. This is the second sentence." 

(5)原始字符串

如果需要指定一些未经过特殊处理的字符串,如转义序列,那么需要在字符串前增加r或R来指定一个原始字符串(Raw String)。例如:

r"Newlines are indicated by \n" 

2.1.4 数据类型的转换

为了能让各种不同类型的数据更好地在一起工作,经常需要转换数据类型。为了更好地理解数据类型,此处,在程序中引入type()函数,该函数可以输出参数的数据类型。例如,在交互模式中输入以下命令可以得到各个常量的数据类型。

>>> type(100) 
<class 'int'> 
>>> type(3.14) 
<class 'float'> 
>>> type("Hello") 
<class 'str'> 

在大部分关于数字的运算中,Python会自动把整数类型的数据转换成实数类型,这是因为将整数变成实数并不会损失原来数字中的数据,比如把1变成1.0。但是将一个实数转换成整数类型,原数据中的小数部分会被舍弃(不使用四舍五入)。例如:

>>> int(10.5) 
10

甚至,在一些字符串中也会包含数字,为了获取字符串中的数字,也需要使用类型转换函数。例如:

>>> int("50") 
50 
>>> float("2.55") 
2.55