模块(Module)和包(Package)
1.模块:一个包含所有你定义的函数和变量的文件,其后缀名是 .py ,一个.py文件就是一个模块
2.包:一定包含 init.py模块 的文件夹,一般也会包含其他一些模块和子包
3.库(lib):库是完成一定功能的代码集合,具体表现可以是包,也可以是一个模块
4.框架(framework):为解决一个开放性问题而设计的具有一定约束性的支撑结构
5.python内置了一些库,除此之外,还有其他人自己做的一些库,称之为第三方库
6.一般把第三方库放在…/python3/lib/site_packages中
一、导入模块
注意:python中同一模块只允许被导入一次
1.import 语句
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端
1)import
import导入模块执行的操作:
-
产生一个新的名称空间;
-
在新建的名称空间俩面执行模块(.py)的内容
-
拿到了一个模块名, 执行模块文件产生的名称空间
import json import unittest
2)import …. as …**
- 对于导入的模块重命名
列如
import common.HTMLTestRunner as HTMLTestRunner
2.from … import… 语句
从模块里面导入函数, 变量, 装饰器等……
列如:
from time import steep
3.安装第三方模块
使用:
pip install 模块名称
在终端中执行该命令
二、包
包就是一个包含有__init__.py文件的文件夹
包的本质是模块的一种形式,包是用来被当做模块导入
导入包发生的三件事(假设导入mmm包):
1、产生一个名称空间
2、运行包下的__init__.py文件,将运行过程中产生的名字都丢到1的名称空间中
3、在当前执行文件的名称空间中拿到一个名字mmm,mmm指向1的名称空间
mmm文件下__init__.py
print('运行了。。。。')
x = 1111
y = 2222
def say():
print('hello')
test.py
import mmm
print(mmm.x)
print(mmm.y)
mmm.say()
结果:
运行了。。。。
1111
2222
hello
关于包相关的导入语句也分为import和from … import …
两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:
凡是在导入时带点的,点的左边都必须是一个包,否则非法。
如import 顶级包.子包.子模块,但都必须遵循这个原则。
对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。
例如:
from a.b.c.d.e.f import xxx
import a.b.c.d.e.f
其中a、b、c、d、e 都必须是包