模块
简介
模块就是一系列的整合,使用时直接调用即可,模块可以提高效率
1.来源
1.内置的(python解释器自带的,可以直接使用)
2.第三方的(别人写好直接放网上,想要下载才可以使用)
3.自定义的(自己写的)
2.存在模式
一共有四种模式,目前只用2种
1.我们自己写的单个py文件(一个py文件就是一个模块)
2.包:
其实就一系列模块的结合体,其实就是文件夹
import句式
import xxx # 导入xxx文件
首次导入文件,会执行导入文件的代码,导入文件不管你导入几次,都只执行一次
导入文件的过程:
1.运行执行文件,产生执行文件的全局名称空间
2.运行md.py文件,会产生md文件的全局名称空间,把md文件里的名字都丢到md的全局名称空间去
3.在执行文件中有一个md的变量,指向导入文件的空间地址
4.以后我们执行文件中就可以用md来点出来导入文件中的名字
导入文件之后,以后在用导入文件中的名字,只需要使用md点语法形式点出来就可以
不会与执行文件中的名字发生冲突,因为我们是指名道姓的取值
from .... import ....句式
首次导入会执行文件
导入多次也只会执行一次
导入文件的过程:
1.运行执行文件,产生执行文件的全局名称空间
2.运行导入文件md.py,产生md文件的全局名称空间,然后把md中所有的名字都丢到md的全局名称空间中去
3.在执行文件中有一个变量xxx指向导入文件中的xxx的空间地址
4.我们想要使用导入文件的xxx,直接用money即可,不再使用md.xxx了,此时,知识把导入文件的xxx导入到执行文件,其他都没有
导入文件之后,就有可能发生执行文件中的名字和导入文件中的名字产生冲突,此时,会使用当前执行文件中的名字
导入模块的扩展用法
1.起别名
以下都是一样的效果import xxx as t
print(xxx.name)
print(t.name)
from xxx import name as t
print( t )
2.连续导入
一次导入多个变量
import md, time, os, sys
3.通用导入
只允许导入固定变量
from md import * # 导入文件
在执行文件的末尾
__all__:[xxx, yyy] # 只允许导入xxx和yyy文件
判断文件类型
1.__name__
1.在执行文件行文件中打印,就是字符串__mian__
2.如果在导入文件中打印,就是导入文件的文件名
2.如何让一个文件不被导入
提前做个判断,看文件中的__name__,是文件名还是 ' __mian__ '
if __name__ == ' __main__ ' :
pass
循环导入(了解)
循环导入就是导入卡住
导入文件xxx:
from yyy improt a
b = 2
导入文件 yyy:
from xxx import b
a = 1
执行文件:
import xxx
import yyy
print( ' 结束 ' )
由于一直循环卡死就会报错,所有我们必须处理
1.如何处理
1.把导入语句放到代码最下面 # 不建议使用,一般放开头2.函数式 #将导入写成函数,然后再调用
模块的查找顺序(重要)
1.查找顺序
1.先从内存中查找
2.再从内置模块中查找
3.从环境变量sys.path中查找(重要)
4.以上都找不到就报错
2.添加到sys.path
sys.path.append(r ' D:路径 ')
3.from 模块1.模块2.模块3 import ... 句式
from aaa.bbb.ccc import xxx