Python 模块
包的概念
1.包是一种管理 Python 模块命名空间的形式,采用"点模块名称"
2.在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录
3.目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包
4.包是一个有层次的文件目录结构,它定义了由n个模块和n个子包
5.用户可以每次只导入一个包里面的特定模块
6.包的导入和模块导入差不多
7.导入包时,直接执行init方法
8.导入包时如果只写包名,默认不会导入所有模块,应在init模块中再次导入需要的模块或以from...import...的形式导入
模块和包补充
1.库是完成一定功能的代码集合,具体表现可以是包,也可以是一个模块
2.框架是解决一个开放性问题而设计的具有一定约束性的支撑结构
3.包和模块一般存在lib文件夹中
4.从包中导入单个或多个模块,或从模块中导入一些模块中的资源
不能从包中导入模块的资源,不能从大包中导入小包的模块
要保证面向原则,即只能导入自己的下一级
模块的创建
Python创建自己的模块很方便,所有的.py文件都被视为是一个模块
我们可以用import 文件名的方式把它导入自己的新文件
不过我们要注意创建的模块要符合命名规范,比如首字母不能是数字等
如果首字母是数字就会出现语法错误
引用的时候不用加扩展名.py
下面我们通过实例来演示一下
a1.py
#coding=utf-8
def print_name():
print('黑锅~~~~不要的')
b.py
#coding=utf-8
import a1
a1.print_name()
导入模块分类
1.import
2.from ...import
import
a.py
#coding=utf-8
def jia(a,b):
print(a+b)
b.py
#coding=utf-8
import a
#打印20+30
a.jia(20+30)
from ...import ...
a.py
#coding=utf-8
def jia(a,b):
print(a+b)
b.py
#coding=utf-8
from a import jia
#打印20+30
jia(20+30)
模块重载
如果真的想要python在同一次会话中再次运行文件(不停止和重新启动会话),需要调用imp标准库模块中可用的reload函数(这个函数也是一个python2.6内置函数,但在python3.0中不是内置的)。
模块重载实例
python3.0中的示例:
>>> from imp import reload
>>> reload(script1)
reload函数载入并运行了文件最新版本的代码,如果已经在另一个窗口中修改并保存了它,那将反映出修改变化。 reload函数希望获得的参数是一个已经加载了的模块对象的名称,所以如果在重载之前,请确保已经成功地导入了 这个模块。值得注意的是,reload函数在模块对象的名称前还需要括号,import则不需要。reload是一个被调用的 函数,而import是一个语句。
注意:python3.0把reload内置函数移到了imp标准库模块中。它仍然像以前一样重载文件,但是,必须导入它才能使用。