模块结构和布局
可以参考以下布局:
- 起始行(Unix): 通常只有在类 Unix 环境下才使用起始行,有起始行就能够仅输入脚本名字来执行脚本,无 需直接调用解释器。
- 模块文档: 简要介绍模块的功能及重要全局变量的含义,模块外可通过
module.__doc__
访问这些内容。 - 模块导入: 导入当前模块的代码需要的所有模块;每个模块仅导入一次(当前模块被加载时);函数内部的模块导入代码不会被执行, 除非该函数正在执行。
- 变量定义: 这里定义的变量为全局变量,本模块中的所有函数都可直接使用。从好的编程风格角度说, 除非必须,否则就要尽量使用局部变量代替全局变量,如果坚持这样做,你的代码就不但容易维护,而且还可以提高性能并节省内存。
- 类定义: 所有的类都需要在这里定义。当模块被导入时
class
语句会被执行, 类也就会被定义。类的文档变量是class.__doc__
。 - 函数定义: 此处定义的函数可以通过
module.function()
在外部被访问到,当模块被导入时def
语句会被执行, 函数也就都会定义好,函数的文档变量是function.__doc__
。 - 主程序: 无论这个模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码。通常这里不会有太多功能性代码,而是根据执行的模式调用不同的函数。