1.模块
- 模块的定义与分类
- 一个模块就是一个py文件.这个魔铠存储很多相似的功能,相似的函数集合体
- 分类
- 内置模块,标准库,Python自带的,times,os,sys,等等200多种
- 第三方库(模块),各种大神写的一些模块,通过pip install....安装,有6000多种
- 自己写的模块,自定义模块
2.import
-
# import tbjx # # 当我引用tbjx模块的时候,实际上将tbjx.py执行一遍,加载到内存. # import tbjx # import tbjx # import tbjx # 只是第一次引用时,将此模块加载到内存.下几次不会再加载
-
第一次导入模块发生三件事
- 将tbjx文件加载到内存
- 在内存中创建一个以tbjx命名的名称空间
- 通过tbjx名称空间的名字,等方式应用此模块的名字(函数名,变量,类名等等)
-
坑:通过tbjx.的方式用用此模块的名字时,一定是从次模块中寻找的,不会在被执行变量总寻找变量名称,通过import引用模块 他有自己的独立名称空间,与当前执行文件没有关系
-
给模块起别名
- import 模块名 as 别名
- from 模块名 improt 被调用的函数名
3.from ...import ...
- 相当于从模块的全局空间中将变量与值的对应关系复制到当前执行文件的全局名称空间的
- 优点:使用起来方便了
- 缺点: 容易与当前执行文件产生覆盖结果
- 如果要引用一些模块的变量,那么执行文件中就不应该出现同名变量
4. from ... import *
- 与__ all__ 一起使用,__ all __ 在模块中与列表选择需要调用的函数名
5. __ name __
-
py文件的两种功能
-
py文件的第一个功能:执行文件(承载代码) 脚本.
直接打印
__name__
返回__main__
-
py文件的第二个功能: 模块(被执行文件).
直接打印
__name__
返回tbjx
模块名 作用:用来控制.py文件在不同的应用场景下执行不同的逻辑(或者是在模块文件中测试代码)
-
6.模块的搜索路径
-
# 寻找模块的路径: 内存 ----> 内置模块 ---> sys.path中找 # 只要这三个地方:内存 内置模块 sys.path可以找到这个引用的模块的路径,这个模块就可以直接引用到. # import sys # # print(sys.path) # # import tbjx # print(sys.modules) # 如何引用到tbjx1.py import sys # print(sys.path) sys.path.append(r'D:s23day15') # import tbjx import tbjx1 tbjx1.read1()