1. 行结构和缩进
程序中的每条语句都以换行符结束。可以使用续行符"\"将长语句分为几行,例如:
a = math.cos(3 * (x - n)) + \
math.sin(3 * y - n)
使用三引号定义的字符串、列表、元组或字典分布在多行上时,不需要使用续行符。缩进用于表示不同的代码块,如函数体、条件语句、循环和类。代码块中首条语句的缩进量可以是任意的,但整个代码块中的缩进必须保持一致。
要在一行上放置多条语句,可以使用分号";"隔开。除非是在交互模式下运行,否则解释器将忽略所有空白行。
2. 标识符和保留字
标识符是识别变量、函数、类、模块和其他对象的名称。标识符可以包含字母、数字和下划线,但必须以非数字字符开始,并且区分大小写。另外,像if、else和for这样的单词是保留字,也不能用作标识符名称。
以下划线开始或结束的标识符通常具有特殊含义。比如以一个下划线开始的标识符不能使用from module import *语句导入,前后均带有双下划线的标识符是为特殊方法保留的,前面带有双下划线的标识符则用于实现私有的类成员。
3. 数字字面量
内置的数字字面量分为4种类型:布尔值、整数、浮点数和复数。标识符True和False被解释为布尔值,其整数值分别是1和0。像123这样的数字被解释为十进制数。要使用八进制、十六进制或二进制指定整数,可以在值的前面分别加上0、0x或0b。
在Python中,整数的位数是任意的,所以如果要指定一个非常大的整数,只需写出所有位数。老的代码可能会看到数字后面加上l或L,选择将整数内部表示为固定精度的机器整数或任意精度的长整数类型,如今已无必要。
像123.4和1.23e+02这样的数字被解释为浮点数。整数或浮点数后面加上j或J就构成了虚数,如12.34J,一个实数加上一个虚数就构成了复数。
4. 字符串字面量
字符串字面量是用于指定一个字符序列,其定义方法是把文本放入单引号" ' ",双引号" " ",或三引号" ''' "或 " """ "中。这三种引号形式在语义上没有分别。三引号的字符串可以分布在多行上并包括所有格式符号(换行符、制表符、空格等)在内。
反斜杠" \ "字符用于转义特殊字符,如换行符、反斜杠本身、引号和非打印字符。另外,可以在字符串字面量前加上r或R,如r'\d'。这些字符串称为原始字符串,因为其中所有的转义字符都会原封不动的保留。原始字符串不能以单个反斜杠结尾,如r"\"。
5. 容器
将一些值放在方括号"[ ... ]"、圆括号"( ... )"和花括号"{ ... }"内,可分别表示一个列表、元组和字典中包含的对象集合。
6. 运算符、分隔符及特殊符号
Python可以识别的运算符有:+、-、*、*、/、//、%、<>、&、|、^、~、、<=、>=、==、!=、<>、+=、-=、=、/=、//=、%=、*=、&=、|=、^=、>>=、<<=。以下标记可以用作表达式、列表、字典和语句不同部分的分隔符:(、)、[、]、{、}、,、:、.、`、=、;。
$和?在Python中没有任何意义,不能出现在程序中,但可以出现在引号中的字符串字面量中。
7. 文档字符串
如果模块、类或函数定义的第一条语句是一个字符串,该字符串就成为了相关对象的文档字符串,例如:
def fact(n):
"This function computes a factorial"
if (n <= 1): return 1
else: return n * fact(n-1)
代码浏览工具和文档生成工具有时会用到文档字符串。通过对象的__doc__属性可以访问文档字符串。
8. 装饰器
函数、方法或类定义的前面可以使用一个特殊的符号,称为装饰器,其目的是修改定义后面的行为。装饰器使用"@"符号表示,必须放在单独的行上并且位于对应的函数、方法或类之前,例如:
@staticmethod
def bar():
pass