模块的初识与引用

模块

  • 一个模块就是一个py文件
  • 如果10万行代码都写在一个文件中会造成
    1. 不易维护
    2. 效率低
  • 分文件:10个文件,每个文件有50个函数,有一些相同功能或者相似功能的函数.代码冗余,重复性.我们应该将这10个函数提取出来,放在一个文件中,随用随拿.
    2. 容易维护,组织结构更清晰
  • 一个模块就是一个py文件,这个模块存储很多相似的功能,相似的函数集合体
  • 模块的分类:
    • 内置模块,标准库,python解释器自带的times,os,sys等等,200多种.
    • 第三方库(模块),各种大神写的一些模块,通过pip install...安装.600多种.
    • 自己写的模块,自定义模块

模块的引用

import引用

引用模块的过程

1. 将tbjx.py文件加载到内存.
2. 在内存中创建一个以tbjx命名的名称空间.
3. 通过tbjx名称空间的名字.等方式引用此模块的名字(变量,函数名,类名等等).

注意点

1.坑:通过模块名.的方式引用此模块的名字时,一定一定是从此模块中寻找. 没有就报错
2.通过import 引用模块 他有自己的独立名称空间,与当前执行文件没有关系.
3.可以起别名:将一个比较长的模块名化简成简单的.

举例

import time,os,sys  #同时引入多个模块 不推荐.
import time
import os
import sys
易于阅读 易于编辑 易于搜索 易于维护。

from 引入模块

原理

相当于从 被引用模块 的全局空间中将 引用的变量与值的对应关系复制到当前执行文件的全局名称空间中.

注意

优点:使用起来方便了.
缺点:容易与当前执行文件产生覆盖效果.

特殊情况:极值情况,工作中不会出现.(了解)
因为如果你要是引用一些模块的变量,那么执行文件中就不应该出现同名变量.

使用

from sq import name
from sq import name as n#也可以起别名
from sq import * 与__all__配合使用(写在模块文件中)
	__all__ = ['name', 'read1', 'read2']

__name__的用法

用来控制.py文件在不同的应用场景下执行不同的逻辑(或者是在模块文件中测试代码)
被引入 
	就是原名__name__ == '模块名':
当前脚本运行
	就是__name__ == '__main__':

模块引用路径

寻找模块的路径: 内存 ----> 内置模块  ---> sys.path中找
只要这三个地方:内存 内置模块 sys.path可以找到这个引用的模块的路径,这个模块就可以直接引用到.

如何引用到在其他文件夹的sq.py模块

第一步。先把sq.py的路径加进去sys.path中
import sys
sys.path.append(r'D:\s23\16-20模块 包\day16 初识模块 及引用')
import sq
print(sq.name)
# import sys
# print(sys.path)#是python的搜索模块的路径集
# import sq
# print(sys.modules)
#

sys.modules方法

python sys.modules模块
sys.modules是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules都将记录这些模块。字典sys.modules对于加载模块起到了缓冲的作用。当某个模块第一次导入,字典sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。
字典sys.modules具有字典所拥有的一切方法,可以通过这些方法了解当前的环境加载了哪些模块
posted @ 2020-03-01 10:21  一起奥利给  阅读(196)  评论(0)    收藏  举报