模块
封装:
容器:数据的封装
函数:语句的封装
类:方法和属性的封装
模块:程序
查看模块文档:
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
- 创建一个文件夹,存放相关模块,文件夹的名字就是包的名字
- 在文件夹中创建一个__init__.py的模块文件,内容可以为空
- 将相关的模块放入文件夹中
导入包的模块:
导入时在模块前加 包名.
以下提供一个可供参考的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