一、命名规则

命名规则是程序开发人员的一种习惯用法,每一种编程语言都有独特的命名规则,Python语言也不例外。

1.1 变量名

变量名的首字符一般是字母或下划线,除了首字符之外的其他这符则可以由字母、下划线或数字组成,而且在定义变量名时不得使用Python语言的保留字。应该让变量名尽可能地表达该变量的含义、定义变量时尽量避免使用缩写。
a)变量名的首字符必须是26个英文字母(大小写均可)或下划线(_);
b)除首字符外,其他字符可以由字母、下划线(_)或数字(0-9)组成;
c)变量名对大小写是敏感的;

例如:_salary = 5000

1.2 模块名

模块名的首字符一般是小写英文字母。扩展名为.py的文件本身就是一个模块,因此,模块名也就是文件名。

例如: #Filename: ruleModule.py

1.3 类名和对象名

通常情况下,类名的首字母为大写,其他字母采用小写,而对象名使用小写字母。访问类的属性和方法的表示方式为:在对象名后面跟操作符“.”。类的私有变量和私有方法则以两个下划线作为前缀。

例如:
class Teacher    # 类名的首字母必须大写
__name = ""      # 私有实例变量前必须以两个下划线开始

1.4 函数名

函数名的首字母通常为小写,并通过下划线或单词首字母大写的方式增加函数名的可读性。对于导入模块中的函数名,则使用模块名作为其前缀。

例如:
import math
print math.pi
a = math.sqrt(9.0)

二、代码缩进

代码缩进指的是在每行代码前键入空格或制表符来表示代码之间的层次关系。大多数的编程语言都需要使用代码缩进,它不仅可以规范程序的结构,而且还可以很方便地阅读和理解代码。对于C、C++、Fortran和Jave等语言,代码缩进只是编程的一个良好习惯;而对于Python语言,代码缩进是一种语法,如果缩进错误将会抛出IndentationErroe异常。Python语言采用代码缩进和冒号(:)来区分代码块之间的层次关系。


三、数据类型

不同的编程语言包含不同的数据类型,Python语言提供了下列几种内置的数据类型和数据结构:数字类型、字符串类型、列表(list)、元组(tuple)、字典(dictionary)。

3.1 数字类型

Python语言包含4种数字类型,分别是:整型、长整型、浮点型和复数类型。

3.2 字符串类型

字符串指的是一串字符组成的序列。Python语言使用单引号(')、双引号(")或三引号(''')来表示字符串类型的数据。其中,单引号和双引号的作用相同,使用它们定义字符串时,字符串中所有的空格和制表符都被保留;三引号是Python语言的特有语法,用来定义多行字符串,在三引号内还可以任意使用单引号、双引号或换行符等。

3.3 元组(tuple)

元组由一系列元素组成,且每个元素可以存储不同类型的数据(例如,字符串、数字等)。
元组使用圆括号来定义,各元素之间通过逗号进行分隔。元组中的元素一旦确定,就不允许对其进行修改。

元组的访问主要有两种方式:索引(index)和切片(slice)。
1)索引也可以称为“下标”,通过一对方括号指明某个元素所在的位置,进而访问元组中的元素。元组的索引从零开始计数,例如,tuple_name[0]表示访问元组tuple_name的第1个元素。负数索引从元组的末尾处开始计数。
2)切片的表示方法是在元组名后跟方括号,方括号中包含一对可选的数字并使用冒号进行分隔,例如,tuple_name[1:5]。

Python语言中将创建元组的过程称为“打包”;将元组中各个元素分别赋值给多个变量的过程称为"解包“。
例如:
zoo = ('wolf','elephant','penguin')        # 打包
a, b, c = zoo                                          # 解包

3.4 列表(list)

列表指的是能够存储有序元素的数据结构。在Python语言中,列表的所有元素都包括在方括号([])中,各元素之间使用逗号进行分隔。与元组不同,读者可以添加、删除或搜索列表中的元素,因此,列表是可变的数据结构。

访问列表的方法与访问元组的方法十分相似,同样支持索引、切片操作,另外可使用append()方法为列表添加元素,使用remove()方法删除列表中的元素等操作。
例如:
list = ['car', 'jeep', 'bike']
list.append('train')
list.remove('jeep')

3.5 字典(dictionary)

字典是使用键-值对(key-value)来表示的内置数据结构。其中:
1)键和值之间使用冒号进行分隔;
2)各个键-值对之间使用逗号进行分隔;
3)所有的键-值对都包含在大括号{}中;

字典的访问方法与元组和列表的访问方法均不同。访问元组和列表时是通过索引来获取对应的元素值;而字典的访问则是通过”键“来获取对应的”值“。
例如:
dict = {"a":"History","b":"Chinese","c":"English"}
print dict["c"]

3.6 序列(sequence)

元组、列表和字符串都属于序列。序列的两个主要特征是:索引操作和切片操作。索引操作可以从序列中获取需要的元素,而切片操作则可以获取序列中的部分元素。


四、变量和常量

变量和常量都是计算机内存中的一块区域,不同之处在于:变量存储的值可以改变,定义时一定要指定变量名;而常量的值不能改变,它所指的计算机内存区域是只读的。

4.1 变量

变量的标识符是变量名,通常情况变量命名时需要遵循“命名规则”。
与Fortran语言和C++语言略有不同,Python语言能够根据变量值自动判断数据类型。因此,编程人员无需关心变量的类型,在该数值的生命周期内由Python语言负责管理。
Python语言中的变量无需声明,赋值操作包含了变量声明的定义。

4.2 全局变量

全局变量指的是能够被不同的函数、类或文件所共享的变量。全局变量可以被文件内部的任何函数访问,也可以被外部文件访问。一般情况下,在函数块之外定义的变量都可以认为是全局变量。为了使代码更加易读,最好在文件的开始位置定义全局变量。
在Python语言中使用global语句来声明全局变量。建议读者在编程过程中,将所有的全局变量都使用global语名声明,以免与局部变量混淆。
尽量不要使用全局变量。全局变量对于不同的模块都可以自由访问,可能导致全局变量的不可预知性。全局变量不仅能够降低函数或模块之间的通用性,而且也降低了代码的可读性。编写Python源代码时,最好使用局部变量。

4.3 局部变量

局部变量指的是只能在函数或代码块范围内使用的变量。函数或代码块一旦结束,局部变量的生命周期也将结束。

4.4 常量

初始化之后不能改变的固定值就是常量。例如,字符串'string'、数字"10"都是常量。


五、运算符和表达式

5.1 赋值运算符

赋值运算符是最简单的运算符,使用赋值符号“=”来表示。

5.2 算术运算符

Python语言中的算术运算符包括:加、减、乘、除四则运算符和求模运算符、求幂运算符等。

5.3 关系运算符

关系运算符将对两个对象进行比较。常用关系运算符如,小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、等于(==)以及不等于(!=)等。

5.4 逻辑运算符

逻辑运算符包含3种情况,分别是:逻辑与(and)、逻辑非(not)和逻辑或(or)。

5.5 运算符的优化级

如果一个复杂的表达式中包含多个运算符,Python将按照运算符优先级顺序执行,而相同优先级的运算符将按照从左向右的顺序进行计算。在写表达式的过程中,建议使用圆括号来对运算符和操作数进行分组,以便明确指出运算的先后顺序,将使得程序更加易读和不容易出错。


六、函数、模块和包

Python语言的源代码一般由函数(function)、模块(module)和包(package)组成。
函数中包含可以重复调用的代码,通过输入参数来返回计算结果;模块则是处理某一类问题的函数和类的集合;而包则是由一系列模块组成的集合。

6.1 函数 (function)

函数是程序的重要组成部分,定义函数时需要使用关键字def,后面紧跟函数名和一对圆括号,并以冒号结束。
函数名以下划线或字母开始,后面可以跟数字、字母或下划线;
函数中的参数可以有1个或多个,所有参数都放在圆括号中,各个参数之间使用逗号进行分隔。

例如:
def  add(a,b):
            sum = a + b
            print 'the sum of a and b is:' sum

add(3,5)

6.2 模块(module)

如果程序中需要重复调用某些函数,就可以编写模块来减少编程工作量。模块指的是包含变量、函数和类的文件,一个Python文件(扩展名为.py)就是一个模块。使用某个模块中的函数或类之前,必须首先导入该模块。

导入模块的常见用法:
1) import module_name               # 导入模块
2) from module_name import *    # 导入模块中的某个类或函数
3) from module_name import function_name        # 只导入模块中的某个类或函数
4) from module_name import function_name as short_alias_name        # 将类名或函数名命名为较短的别名

每个模块都包含用来完成某些特定任务的内置属性。例如,属性__name__用来判断当前模块是否是程序的入口。如果正在运行当前程序,则__name__的值为”__main__“。一般情况下,编程时最好为每个模块添加一个条件判断语句,用来测试模块的功能。

6.3 包(package)

包(package)指的是由一系列模块组成的集合,也是完成某些特定任务的工具箱,使用包可以重复使用程序。