模块简述
一、模块简述
(一)、什么是模块
模块是一系列功能的集合体,分为三大类
1、内置模块
2、第三方模块
3、自定义模块
一个python文件本身就是一个模块,文件名m.py,模块名叫m
(二)、模块的表现形式
1、使用python编写的.py文件,(一个py文件就是一个模块)
2、已编译为共享库或DLL的C或C++扩展
3、把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py的文件,称为包,也是多个py文件的组合)
4、使用C编写并链接到python解释器的内置模块
(三)、为何要用模块
1、内置与第三方模块,拿来即用,极大地提高了自己的开发效率
2、自定义的模块
可以将程序的各部分功能提取出来放到一个模块中为大家共享使用
二、如何使用模块
(一)导入模块
模块的导入方式有import md和from...import...两种
1、import 句式
1、导入
import md
2、运用
md.x
模块被导入时会发生三件事
1.运行执行文件,产生一个执行文件的全局名称空间
2.运行被导入文件
3.导入文件中的名字放入到导入文件的名称空间
4. 在执行文件的名称空间中有一个md的变量指向导入文件的名称空间
注意:
1. 模块会执行,但是导入多次,只会执行一次
2. 在自己的名称空间中如果有与导入文件相同的名字,在调用的时候,指名道姓的调用,不会产生冲突的
2、 from...import...句式
单个导入:from md import money
多个导入:from md import moeny,name,gender
from...import句式首次被导入:
1. 产生一个执行文件的名称空间
2. 会运行导入文件
3. 产生一个导入的名称空间
4. 在执行文件中产生一个money,执行导入文件的money,导入文件中的其他没有被导入的不能在执行文件中使用,如果想使用,继续导入过来就可以使用
(二)模块灵活运用的补充方式
1、起别名
给模块名起别名 import mdddddddddddd as d
给模块中的某一个名字起别名 from md import read1 as r
起别名通常用来给名称过长的模块或变量使用,方便书写
2、多个模块的连续导入
1、可以一行导入一个
import time
import os
import sys
2、可以一行导入多个
模块:mport time,os,sys 注意:这里推荐是用一行导入一个,因为格式简明清晰
变量名:from mdddddddddddddddddddddddddd import a,b,c,d
3、通用导入
from md import *
它的作用相当于import md,可以使用md里面所有的变量名
(三)if __name__ == '__main__'的运用
__name__内置方法的特性:
如果print(__name__)当前所在文件是执行文件:打印__name__返回值为'__main__'(字符串类型)
如果print(__name__)当前所在文件是导入文件,运行导入它的文件打印出的__name__返回值是被导入的模块名
根据其特性:
在执行模块中写入if __name__ == '__main__',可以通过if
在导入模块中写入if __name__ == '__main__',不可以通过if
(四)循环导入问题
循环导入不允许出现
解决方式1:导入语句放到末尾
解决方式2:导入语句放在函数中
(五)模块的查找顺序
1、补充知识:
sys模块
sys.path 相关路径集
sys.path.append() 添加路径到相关路径集
2、查找顺序
1. 先从内存中查找
2. 从内置中查找
3. 从sys.path中
3、如果在执行文件中找不到导入模块,解决方案:
通用方法:
1、通过sys.path.append()添加导入文件路径到相关路径集
2、从当前级向下级导入模块的方法
from aaa import bbb
from aaa.bbb.ccc import ddd
3、从当前级向上级导入模块的方法
pass
(六)其他注意事项
文件名不要和内置模块名冲突
pass