模块的四种形式
- 自定义模块,例如自己定义的common.py就叫common模块
- 内置模块:python解释器自带的,不需要安装
- 第三方模块:需要自己安装,13万个库,无所不能,写库(弄得更简单)
- 包—>含有__inti__.py的文件夹,一种特殊的模块(解决了一个问题)
注意:2和3的模块会用就可以了,但是1和4模块需要掌握
import 实现原理
例如 from time
- 在内存中生成一个叫做time的名称空间
- 运行time.py文件,然后把time.py文件内的名称空间放入time的名称空间内
- 把time的名称空间指向import和from….import.py(当前导入time模块的文件)的名称空间
使用import time导入的时候,使用方法只能time.方法名( ),不能直接方法名
注意:
- 当解释器遇到import语句,如果模块在当前色搜索路径就会被导入(搜索路径是一个解释器会先进行搜索的所有目录的列表)。需要把import命令放在代码的顶端
- 一个模块只会被导入一次,不管你执行了多少次import
from ….import实现原理
例如 from time import gmtime
- 在内存中生成一个叫做time的名称文件
- 运行time.py文件,然后把time.py文件内的名称空间放入time的名称空间内
- 把gmtime方法指向import和from….import.py(当前导入time模块的文件)的名称空间内
可以直接使用方法() 来使用相关方法
from…import*
既可以只使用方法名加括号使用模块里的方法,还可以使用所有的方法,例如:from math import *, 可以一次性引入模块中的所有东西 但是不应该频繁使用,有可能会造成冲突,例如用math下的power方法,power(),有可能你在后面自己定义了一个叫power()的函数,这样调用就会有问题
模块的搜索路径
1. 先从内存中找
from m2 import y
import time
time.sleep(10)
print(y)
# 在sleep的10s内删除了m2,但是依然能运行,
2. 从内置模块里面找
from time import time
print(time)
3. 自定制模块
就是在自己定义完的模块里面开始找
4. 环境变量
#项目的执行文件中一定要弄一个环境变量,将模块所在的目录包含在环境变量中
'''
例如我写一个模块test.py,里面有方法f1,路径是D:模块
那就应该使用下面这句话
'''
import sys
sys.path.append(r'D:模块')
import xxx 和 from xxx import xxx的比较
戳这 ==> import 和 from xxx import xxx