字面常量
一个字面常量(Literal Constants) 的例子是诸如5、1.23这样的数字,或者是如这是一串文本或This is a string这样的文本。
用这样的称呼是因为它们是 字面上的——你用的就是它字面意义上的值或是内容。
数字2总是表示它本身而非其他含义——它是一个 常量,因为它的值不能被改变。因此,所有的这些都被称作字面常量。
数字
数字主要分为两种类型——整数(Integers) 与浮点数(Floats) 。
有关整数的例子即2,它只是一个整数。
有关浮点数(Floating Point Numbers,在英文中也会简写为floats) 的例子是3.23或52.3E-4。其中,E表示10的幂。在这里,52.3E-4表示52.3 * 10^-4。
没有单独的long类型。int类型可以指任何大小的整数。
字符串
一串字符串(String) 是 字符(Characters) 的 序列(Sequence) 。
基本上,字符串就是一串词汇。
单引号
你可以使用单引号来指定字符串,例如'将我这样框进来'或'Quote me on this'。
所有引号内的空间,诸如空格与制表符,都将按原样保留。
双引号
被双引号包括的字符串和被单引号括起的字符串其工作机制完全相同。
例如"你的名字是?"或"What's your name?"。
三引号
你可以通过使用三个引号 """ 或 ''' 来指定多行字符串。
你可以在三引号之间自由地使用单引号与双引号。
'''这是一段多行字符串。这是它的第一行。
This is the second line.
"What's your name?," I asked.
He said "Bond, James Bond."
'''
字符串是不可变的
这意味着一旦你创造了一串字符串,你就不能再改变它。尽管这看起来像是一件坏事,但实际上并非如此。我们将会在稍后展现的多个程序中看到为何这一点不是一个限制。
针对C/C++程序员的提示:Python中没有单独的char数据类型。它并非切实必要,并且我相信你不会想念它的。
针对Perl/PHP程序员的提示:记住单引号括起的字符串和双引号括起的字符串是一样的——它们不存在任何区别。
格式化方法
有时候我们会想要从其他信息中构建字符串。这正是format()方法大有用武之地的地方。
一个字符串可以使用某些特定的格式(Specification) ,随后,format()方法将被调用,使用这一方法中与之相应的参数替换这些格式。
Python中format()方法所做的事情便是将每个参数值替换至格式所在的位置。这之中可以有更详细的格式,例如:
转义序列
想象一下,如果你希望生成一串包含单引号(') 的字符串,你应该如何指定这串字符串?
例如,你想要的字符串是"What's your name?"。
你不能指定'What's your name?',因为这会使Python对于何处是字符串的开始、何处又是结束而感到困惑。所以,你必须指定这个单引号不代表这串字符串的结尾。
这可以通过 转义序列(Escape Sequence) 来实现。
你通过\来指定单引号:要注意它可是反斜杠。
现在,你可以将字符串指定为'What\'s yourname?'。
另一种指定这一特别的字符串的方式是这样的:"What's your name?"。
类似地, 你必须在使用双引号括起的字符串中对字符串内的双引号使用转义序列。
同样,你必须使用转义序列 \\ 来指定反斜杠本身。
如果你想指定一串双行字符串该怎么办?
一种方式即使用如前所述的三引号字符串。
或者你可以使用一个表示新一行的转义序列 \n 来表示新一行的开始。
print 'This is the first line.\nThis is the second line.'
上述程序输出结果为
This is the first line.
This is the second line.
另一个你应该知道的大有用处的转义序列是制表符 \t。
在字符串中,一个放置在末尾的反斜杠表示字符串将在下一行继续(代码中),但不会换行(输出结果中)。
原始字符串
如果你需要指定一些未经过特殊处理的字符串,比如转义序列,那么你需要在字符串前增加r或R来指定一个 原始(Raw) 字符串 。
print r"This is the first sentence.\nThis is the second sentence."
上述程序输出结果为
This is the first sentence.\nThis is the second sentence.
针对正则表达式用户的提示:在处理正则表达式时应全程使用原始字符串。否则,将会有大量Backwhacking需要处理。举例说明的话,反向引用可以通过 '\\1' 或 r'\1' 来实现。
变量
如果只使用字面常量很快就会让人感到无聊——我们需要一些能够存储任何信息并且也能操纵它们的方式。这便是变量(Veriables) 登场的时刻。顾名思义,变量的值是可以变化的,也就是说,你可以用变量来存储任何东西。变量只是你的计算机内存中用以存储信息的一部分。与文字常量不同,你需要通过一些方式来访问这些变量,因此,你需要为它们命名。
标识符命名
变量是标识符的一个例子。标识符(Identifiers)是为某些东西提供的给定名称。在你命名标识符时,你需要遵守以下规则:
第一个字符必须是字母表中的字母(大写ASCII字符或小写ASCII字符或Unicode字符) 或下划线(_) 。
标识符的其它部分可以由字符(大写ASCII字符或小写ASCII字符或Unicode字符)、下划线(_)、数字(0~9)组成。
标识符名称区分大小写。例如,myname和myName并不等同。要注意到前者是小写字母n而后者是大写字母N。
有效的标识符名称可以是i或name_2_3,无效 的标识符名称可能是2things,this is spaced out,my-name和>a1b2_c3。
数据类型
变量可以将各种形式的值保存为不同的数据类型(Data Type)。基本的类型是我们已经讨论过的数字与字符串。在后面的章节中,我们会了解如何通过类(Classes)类创建我们自己的类型。
对象
需要记住的是,Python将程序中的任何内容统称为对象(Object)。这是一般意义上的说法。我们以“某某对象(object)”相称,而非“某某东西(something)”。
针对面向对象编程语言用户的提示:Python是强(Strongly) 面向对象的,因为所有的一切都是对象, 包括数字、字符串与函数。