模块/包
在Python中,一个.py文件就称之为一个模块(Module)。Python又引入了按目录来组织模块的方法,称为包(Package)。
一个 abc.py 的文件就是一个名字叫 abc 的模块,一个 xyz.py 的文件就是一个名字叫 xyz 的模块。假设我们的 abc 和 xyz 这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如 mycompany ,按照如下目录存放:

引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在, abc.py 模块的名字就变成了 mycompany.abc ,类似的, xyz.py 的模块名变成了 mycompany.xyz 。
每一个包目录下面都会有一个 init.py 的文件,这个文件是必须存
在的,否则,Python就把这个目录当成普通目录,而不是一个包。 init.py 可以是空文件,也可以有Python代码,因为 init.py 本身就是一个模块,而它的模块名就是 mycompany 。
作用域
正常的函数和变量名是公开的(public),可以被直接引用,比如: abc , x123 , PI 等;类似 __xxx__ 这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的 __author__ , __name__ 就是特殊变量, hello 模块定义的文档注释也可以用特殊变量 __doc__ 访问,我们自己的变量一般不要用这种变量名;类似 _xxx 和 __xxx 这样的函数或变量就是非公开的(private),不应该被直接引用,比如 _abc , __abc 等;

在模块里公开 greeting() 函数,而把内部逻辑用private函数隐藏起来了,
这样,调用 greeting() 函数不用关心内部的private函数细节,这也是一种非常
有用的代码封装和抽象的方法,即:外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。
网友评论