模块的概念
所谓模块不过是将代码和数据封装起来以便重用,是最高级别的程序组织单元,通过把代码打包形成一个可以实现特定功能的文件就是模块。在JAVA中抽象出实物的共有属性而后形成了类,JAVA就是把一个个类实例化成对象,然后把一个个对象组合起来形成一个整体在共同完成某项工作,得已跟好的刻画世界。在python中把类和对象以及函数整体打包形成一个文件,把文件打包又形成一个包,包其实就是一个文件夹的目录。python中可以在一个模块中导入另外一个或多个模块从而可以使用另外模块中的变量以及函数与对象。多个文件在物理存储上面互不相关独自形成一个整体,通过导入包与文件可以把许多原本互不相关的模块连接形成一个更宏伟工程。如果说JAVA中的对象与对象之间的组合刻画了这个世界的话,那python包与包,文件与文件的架构就是刻画了整个宇宙。python语言即简洁优美,像个小清新,又波澜壮阔,气势宏伟。
模块的特点
- 代码高度重用:许多类似的代码只要写一遍然后封装成文件以后
都可以很方便的使用 - 划分系统命名空间:每一个文件都有独立的数据与代码储存空
间,各自近在咫尺又远在天涯。 - 实现共产主义:不同的文件可以在一起共同生活,共同劳动,共
同享受劳动成果
模块路径的搜索路径
模块与模块之间既然可以通过导入相互联系在一起,可以将各种各样的模块导入顶层文件来刻画现实,那么如何管理这写文件嘞?通过什么样的方式才能导入模块嘞?就好像我在去某个地方旅游前要先规划好路径,同样的导入包之前也要确定好路径
- 程序的主目录:即程序的顶层脚本文件目录,到导入包时候这个
目录最先被搜索 - pythonpath:即环境变量中python文件的目录,可以任意添加自己
想实现的路径 - 标准库目录:这个在安装python时候自动携带的目录,这个目录
一定会被搜索不需要添加到文件目录 - .pth文件目录:文本文件为.pth后缀的文件自动形成一个目录
import sys
sys.path #查看当前模块搜索路径
sys.path.append('D:\\') #追加查找路径
sys.path
['',
'D:\\Anacond1\\python35.zip',
'D:\\Anacond1\\DLLs',
'D:\\Anacond1\\lib',
'D:\\Anacond1',
'C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python35\\site-packages',
'D:\\Anacond1\\lib\\site-packages',
'D:\\Anacond1\\lib\\site-packages\\Sphinx-1.4.1-py3.5.egg',
'D:\\Anacond1\\lib\\site-packages\\win32',
'D:\\Anacond1\\lib\\site-packages\\win32\\lib',
'D:\\Anacond1\\lib\\site-packages\\Pythonwin',
'D:\\Anacond1\\lib\\site-packages\\setuptools-23.0.0-py3.5.egg',
'D:\\Anacond1\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\Administrator\\.ipython',
'D:\\']
import math #直接导入math模块
from math import sqrt #只导入math模块中的sqrt函数,可直接使用sqrt
import math as genhao #重命名
print('math.sqrt:',math.sqrt(2))
print('sqrt:',sqrt(2))
print('genhao.sqrt:',genhao.sqrt(2))
math.sqrt: 1.4142135623730951
sqrt: 1.4142135623730951
genhao.sqrt: 1.4142135623730951
'''
在模块搜索路径中创建模块module_test.py:
print('导入测试模块')
print('导入测试模块')
name = 'module_test'
def func():
print('导入模块名为',name)
'''
import module_test #导入模块
from imp import reload #模块重载
reload(module_test)
module_test.func()
导入测试模块
导入测试模块
导入模块名为 module_test
import module_test
# 模块只需加载一次就够了
#调用模块第一次被调用就会执行模块中语句
#重新调用除非重载,否则不会执行语句
module_test.func()
导入模块名为 module_test
- 呀呀呀今天玩台球玩的太过瘾了都忘了时间了,下次绝对不这样了,,写的有点晚了,啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊。