模块

封装:

容器:数据的封装
函数:语句的封装
类:方法和属性的封装
模块:程序
查看模块文档:
import 模块
模块名.__doc__
print(模块名.__doc__)
help()
dir(模块)#查看模块
模块.__all__#查看模块可供外界调用的所有东西,不是所有模块都有
#使用from timeit import *只会导入__all__中的,没有__all__会导入所有不以下划线开头的
模块.__file__#源代码的位置

自定义模块:

就是python文件
模块名 = 文件名(无后缀)
import 模块名
#---------------无需命名空间--------------
from 模块名 import 函数名#只导入一个函数
from 模块名 import *#导入所有
#--------------给命名空间起别名------------
from Oldname as Newname
当使用from 模块名 import *导入时,属性名前加_的属性不会被导入
命名空间:
模块名.函数
当作为模块时 模块名.__name__ == 模块名,当作为主程序时__name__ == __main__
if __name__ == '__main__':
搜索路径:
import sys
sys.path#python会从该列表中存放的路径查找
推荐放入site-packages文件中
可以直接向该列表中加入新路径
可以直接将 模块名与类实例绑定到一起,可以使用模块名像使用类实例一样
import sys
sys.modules[__name__] = Const()
sys.modules 是一个字典,它包含了从 Python 开始运行起,被导入的所有模块。键就是模块名,值就是模块对象。

包:package

  1. 创建一个文件夹,存放相关模块,文件夹的名字就是包的名字
  2. 在文件夹中创建一个__init__.py的模块文件,内容可以为空
  3. 将相关的模块放入文件夹中
导入包的模块:
导入时在模块前加 包名.
以下提供一个可供参考的Python项目结构(仅供参考,没有硬性规定): 鱼C大项目/ |----README/ |    |----readme.txt |    |----LICENSE.txt |    |----requirents.txt |    |----setup.py |----docs/ |    |----help.html |    |----quickstart.html |----test/ |    |----__init__.py |    |----test_basic.py |    |----test_advanced.py |----package/ |    |----__init__.py |    |----moduleA.py |    |----moduleB.py |    |----moduleC.py |    |----static/ |    |    |----images/ |    |    |----sounds/ |----setup.py