1.python中的模块
python中的模块本质上就是一个py文件,我们可以使用 import 文件名 的方式导入文件,当导入文件后,我们就可以使用此文件中包含的变量和函数。
python中的模块分为3种
1.内置模块:直接导入就可以使用的模块,例如:time,sys,random等模块;
2.扩展模块:可以使用 pip install 进行安装的第三方模块;
3.自定义模块:自己写的模块。
对模块的命名规则与对变量的命名规则相同:由数字、字母、下划线组成且以字母或下划线开头;
模块的导入规则:
1.应当在文件开始就导入
2.先导入内置模块
3.再导入扩展模块 - 可以使用 pip 安装
4.自己写的自定义模块
2.模块的相关问题
1.模块的重复导入问题:
我们都知道,在同一py文件中多次导入相同的模块,最终起作用的其实只有第一次导入,其原因如下:
import sys
print(sys.modules)
print(sys.modules.keys())
# print(sys.path)
执行上面代码,我们可以看到如下的输出:
我们可以看到,在此py文件中导入的模块其模块相关信息都会保存在这个字典中,那么当我们导入模块时,若模块名字已经存在于此字典中则不再导入相同模块,只有模块名不存在时才会导入模块,因此若多次导入相同的模块,只有第一次导入时才生效。
2.自定义模块时pycharm会报错:
当我们新建一个 demo.py 文件,并在其他文件中 import demo 时,会看到pycharm飘红:
此时并不是说我们的代码出现错误,因为代码是可以正确运行的 ,那么出现这种现象的原因如下:
import sys
print(sys.path)
执行上面代码,我们会看到一个列表,列表中的元素是不同的路径:
pycharm 编辑器在寻找一个文件时,默认会以 当前在pycharm的打开的工程目录为根目录,在此目录下边寻找需要导入的模块对应的 py 文件;
1.若找到了则不会报错还能自动补全;
2.若没找到,会报错,但是当我们运行代码时,解释器是可以解释的,代码不会出错;
当我们自定义的模块py文件若在 sys.path 中的路径下能找到,代码就可以执行。
3.当我们在导入一个模块时,发生了哪些事?
在对一个模块进行导入时,发生了以下流程:
1.找到模块 - 先从 sys.modules 里查看模块是否已经被导入,
- 若被导入则不再重复导入,
- 若没有被导入,则依据 sys.path 中的路径寻找所要导入的模块;
2.找到模块对应的 py 文件后,创建这个模块的命令空间;
3.执行文件,将文件中的名字都放进命名空间里 - 与其他文件的命名空间相隔离.
3.模块的使用
1.给模块起别名:将模块重命名
格式:import 模块名 as 模块别名
给模块起别名后,就可以通过 模块别名.函数 的方式来调用模块中的方法,例如:
import time as t # 给time模块起别名为 t --> t == time
print(t.time()) # t.time() ==