3.1 代码文件结构
一个初学者,在正式使用Python进行代码编写时,如果能够对Python文件结构有一个整体的清晰认识,知道什么是一个格式良好的源文件,那将对他以后编写规范的源代码非常有益。要知道,我们编写的源代码是整个项目应用系统的一部分,编写格式良好、可读性强的代码,无论对自己还是团队中其他开发者,都有重要意义。
首先我们来看一个完整的Python代码文件(model01.py):
这是一个打印2018年6月日历的小程序,虽然行数不多,但五脏俱全。下面一一解读它。
Python程序的第一行用来指定解释器,用“#!”这一特殊表示符开头(“#”和“!”之间没有空格,否则这一行就变成了普通注释行),后面紧跟着解释器所在的路径,如果不指定解释器,即这行空白,则Python采用默认的解释器。本例中指定了解释器,其路径为E:\DevSys\python\python。
第二行用来指定本源代码文件所采用的编码格式,目前大部分编辑器默认采用UTF-8编码格式。关于编码格式的指定方法,请参看3.2.1节。
第4行至第9行,是文档说明部分,用连续三个双引号开始,并用连续三个双引号结束;也可以用连续三个单引号开始,连续三个单引号结束。
注:虽然文档说明部分不是必需的,但强烈建议开发者在编写程序时予以重视,尤其是一些关键的地方,应当在文档说明部分给出清晰描述,不仅便于日后自己阅读,也会给团队中其他接手你的程序的人带来极大帮助。
第12行使用 import 语句导入一个Python模块。一个模块是一段已经编写好的可执行代码,可以是用Python语言编写的,也可以是用第三方语言(如C/C++等)编写的;在Python程序文件中,可以随时随地使用import语句来导入Python的内置函数模块。这里导入的calendar是一个内置函数模块。
第16~18行定义了三个全局变量。可以看出,Python在定义变量时无需声明变量类型,它会自动根据变量内容设定其类型。
第22~31行定义了无参数函数showCalendar(),函数没有返回值。
第35~36行中,__name__是一个标识模块名称的系统内建变量(可认为一个源代码文件就是一个模块)。这两行的意思是:若当前源代码文件(model01.py)作为被调用模块导入到其他文件,则__name__的值为“model01.py”,此时语句if __name__=="__main__"后面的部分会跳过,不被执行;如果model01.py是主模块(调用其他模块的模块),那么__name__的值为"__main__",解释器便会执行if __name__=="__main__"语句后面的部分。这两行可写可不写,但写上却是一个良好的编程习惯。
最后看一下这个程序的运行结果: