1、模块的定义:模块就是一系列功能的集合体,在python中,一个py文件就是一个模块,比如 module.py 其中module就是模块名。
在python中,模块的使用方式都是一样的,但其实细说的话,模块可以分为四个通用类别:
1 使用python编写的.py文件
2 已被编译为共享库或DLL的C或C++扩展
3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)
4 使用C编写并链接到python解释器的内置模块
2、使用模块:
2.1 使用import导入模块
#首次导入模块会发生三件事:
1、创建一个模块的名称空间。
2、执行模块对应文件,将产生的名字存放于1中的名称空间
3、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间
这个名字和变量名没什么区别,都是‘第一类的’,且使用模块名+‘.’名字的方式
可以访问文件中定义的名字,执行文件名字与被导入模块中的名字来自
两个完全不同的地方。
###之后导入相同的模块名,会直接引用直接的模块不会从新执行文件。
模块中功能的执行始终以自己的名称空间为准。
3、为模块起别名:
我么为了更便捷的使用可以为模块 赋予更简洁的模块名。
用 as 命令。
import spam as sm
print(sm.money)
sm.read1()
engine=input('>>: ').strip()
if engine == 'mysql':
import mysql as db
elif engine == 'oracle':
import oracle as db
db.parse()
二、使用模块之from ... import....
1、from...import...的使用
格式:
1 from spam import read1,read2
2、from...import 与import的对比
#唯一的区别就是:使用from...import...则是将spam中的名字直接导入到当前的名称空间中,所以在当前名称空间中,直接使用名字就可以了、无需加前缀:spam.
#from...import...的方式有好处也有坏处
好处:使用起来方便了
坏处:容易与当前执行文件中的名字冲突
三、模块的查找顺序是:
1、内存中已经加载的模块
2、内置模块
3、sys.path路径中包含的模块
注意的是!!!sys.path的第一个路径是当前执行文件所在的文件夹
import sys
print('time' in sys.modules)
import time
time.sleep(2)
print('time' in sys.modules)
import sys
sys.path.append(r'D:\code\SH_fullstack_s1\day14\dir1')
import m1
m1.f1()