按照惯例先吟诗一首:

《哥舒歌》–西鄙人
北斗七星高,哥舒夜带刀。
至今窥牧马,不敢过临洮。

1.模块结构和布局

合理的布局结构应该如下:

1、起始行:通常只有在类 Unix 环境下才使用起始行,有起始行就能够仅输入脚本名字来执行脚本,无需直接调用解释器。

2、模块文档:简要介绍模块的功能及重要全局变量的含义,模块外可通过 module.doc 访问这些内容。

3、模块导入:导入当前模块的代码需要的所有模块;每个模块仅导入一次(当前模块被加载时);函数
内部的模块导入代码不会被执行, 除非该函数正在执行。

4、定义变量:这里定义的变量为全局变量,本模块中的所有函数都可直接使用。从好的编程风格角度说, 除非必须,否则就要尽量使用局部变量代替全局变量,如果坚持这样做,你的代码就不但容易
维护,而且还可以 高性能并节省内存。

5、类定义语句:
所有的类都需要在这里定义。当模块被导入时 class 语句会被执行, 类也就会被定义。类 的文档变量是 class.doc

6、方法语句:
此处定义的函数可以通过 module.function()在外部被访问到,当模块被导入时 def 语句 会被执行, 函数也就都会定义好,函数的文档变量是 function.doc

7、主程序:无论这个模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码。通常这里 不会有太多功能性代码,而是根据执行的模式调用不同的函数。

2. _ name _ 指示模块应如何被加载

由于主程序代码无论模块是被导入还是被直接执行都会运行,我们必须知道模块如何决定 运行方向。一个应用程序可能需要导入另一个应用程序的一个模块,以便重用一些有用的代码 (否则就只能用拷贝粘贴那种非面向对象的愚蠢手段)。这种情况下,你只想访问那些位于其 它应用程序中的代码,而不是想运行那个应用程序。因此一个问题出现了,“Python 是否有 一种方法能在运行时检测该模块是被导入还是被直接执行呢?” 答案就是……(鼓声雷动)…..没错! name 系统变量就是正确答案。

如果模块是被导入, _ name 的值为模块名字
如果模块是被直接执行,
name 的值为 ‘ main _’

3.变量和内存管理细节

主要包含以下几点:

1、变量无须提前声明
2、变量无须制定类型类型
3、程序员无须关心内存管理
4、变量会被收回
5、del 语句能够直接释放资源