Python模块

Posted by Csming on 2017-04-16

模块

Module
当代码越写越多;同个文件的代码越来越长,就会越来越不容易维护;
可以将很多函数分组,分别放在不同的文件中;这样,每个文件包含的代码就少了;

提高了代码的可维护性、代码重用;

还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突

但是不要和Python的内置函数名字冲突;

  • 为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)

一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块

我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如mycompany

那么,mycompany下的abc模块,就称为:mycompany.abc;

并且,每个目录下都会有:init.py文件;该文件必须存在,否则Python就把这个目录当成普通目录;

init.py可以是空文件,也可以由Python代码,因为该文件本身就是一个模块;其模块名为mycompany

使用模块

Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用

import关键字,引入模块
导入sys模块后,我们就有了变量sys指向该模块,利用sys这个变量,就可以访问sys模块的所有功能

作用域

在一个模块中,有的函数和变量我们希望仅仅在模块内部使用;Python中通过_(下划线)前缀实现;

正常的函数和变量名是公开的(public),可被直接引用;
类似于__xxx__这样的变量是特殊变量,可被直接引用,但有特殊用途;如:author,name

类似于_xxx,__xxx这样的函数或变量是非公开的,不该被直接引用;
private函数或变量不应该被别人引用;可以在公开函数中调用他们;

外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public


参考资料:http://www.liaoxuefeng.com/