Python进阶(八)----模块,import , from import 和 `

mac2022-06-30  61

Python进阶(八)----模块,import , from import 和 __name__的使用

一丶模块的初识

#### 什么是模块: # 模块就是一个py文件(这个模块存放很多相似的功能,函数的集合体) ### 模块的分类: # 内置模块: 标准库 ,python解释器自带的 ,200多种 # 第三方库: 通过pip install 安装第三方库 6000个 # 自己写的模块: 自己编写的特定功能的py文件 #### 自定义模块: # 只是第一次引用时, 将此模块加载到内存, # 执行文件: 被引用文件

二丶模块的导入 import

### 语法 : import 模块名 , 只加载一次(导入就不会再次加载) ### 调用格式 : 模块名 . XX功能 ### 引用模块发送三件事: #1. 把要引入模块加载到内存 #2. 在内存中创建一个以引入模块命名的名称空间 #3. 通过引入模块的名字,以.的方式引入此模块的(变量,函数,类名) ###注意: # 通过import引入的模块,引入模块中的变量不会受到,当前模块相同名字的变量的影响 # 通过import 引入的模块, 他有自己的独立空间,与当前执行的文件没有关系. ### 起别名: import ...模块 as ...缩写名 # 将一个名字较长的模块名 简化成一个 简单名字 import tbjx as k print(k.name) ### 同时调用多个模块 ,以,号分隔 (不建议使用, 会使代码清晰,不易维护) import 模块1, 模块2 ,模块3

三丶from import

### 语法格式: from xxx模块 import 变量 , 只加载一次 from tbjx import func1 print(globals()) # 查看当前文件中的变量, 把需要用的具体变量,从引入模块拷贝一份. ### 特点: # 优点: 使用起来方便 (更容易快速找到指定的要使用的 功能 ) # 缺点: 容易与当前执行文件产生覆盖效果(如果当前执行的文件中具有和导入的模块 相同名字的变量就会被覆盖.谁先加载,谁先被覆盖) ### 注意: (极端情况,一般没人这么折腾自己) # 需求: 在引入一个模块的之后,去执行这个模块的中修改模块的某个变量的值. 不会对当前执行文件造成影响. # 当前执行文件使用的是模块中同一个函数.(只有模块中的变量会被拷贝当前执行文件, 模块中的函数不会被拷贝) # 引用模块中的函数,如果此模块用到一些变量,这些变量还是从此模块中寻找,不会改变当前执行文件的变量 ### 起别名 from tbjx import name as n ##多个导入: from tbjx import name as n from tbjx import read1 as r ### * (尽量别用) from xxx模块 import * # 全部复制(模块中所有的都被全部加载到内存中), 效率低, 容易覆盖 # from .. import * 与__all__配合使用 # 在引入模块的文件中,创建一个列表 __all__=[变量1,变量2,函数名1,函数名2] 一般写在引入模块最上面 #####推荐: # 当前执行的文件中 ,不要出现 与 引入模块相同的名字的变量.

四丶模块路径 和 "__name__"的使用

### __name__ 的使用 ,判断当前文件是可执行的脚本,还是模块 # 1. py文件的第一个功能: 执行文件(承载代码)脚本(主动) ,直接打印(__name___)得到__main__ # 2. py文件的第二个功能: 模块(被执行) 直接打印(__name___)得到 模块名 # 补充: #1.使用pycharm是,点击run 一个.py的文件,(文件包括?下面的代码),就会打印True,此时的 # __name__==__main__ , so , 是一个主动执行脚本. if __name__ == '__main__': print(True) #2. 而且下面的代码,还具有测试功能 def func1(): print('in func1') def func2(): print('in func2') return '执行 func2' func1() func2() if __name__ == '__main__': ret=func2() print('测试func2:'+ret) ### 模块的搜索路径 # 寻找模块的路径: 内存--->内置模块--->sys.path # 只要找到这三个地方: 内存中,内置中 ,sys.path可以找到这个引用的模块的路径,这个模块就直接引用 ### 主动的将一个模块的路径添加到 当前工作sys.path环境 import sys print(sys.path) # 打印当前工作目录 print(sys.modules) # 打印当前文件中所有的模块 sys.path.append(r'XXX文件') # xxx文件 和 你当前执行文件的父目录同级 ,xxx文件包含 tbjx.py文件 import tbjx1

转载于:https://www.cnblogs.com/dengl/p/11090639.html

最新回复(0)