迭代取值与索引取值的差异
- 迭代取值:
- 优点:是通用的取值方式
- 缺点:开始后只能从前往后调用不能回退
- 索引取值:
- 优点:想取哪个值取哪个,可以重复取
- 缺点:对于无序的容器类型,不能使用
模块
模块的介绍
- 什么是模块?
- 模块是一系列功能的结合体(使用模块就能得到一系列功能)
- 模块的分类
- 内置模块(解释器自带)
import time time.sleep(2) - 自定义模块(自己写的)
- 第三方模块(别人写的,需要在网络上下载)
人脸识别,语言识别等
- 内置模块(解释器自带)
- 模块的表现方式
- 1.py文件还有包含多个py文件的文件夹
- 2.已被编译为共享库或DLL的c与c++扩展(了解)
- 3.使用C编写并链接到python解释器的内置模块(了解)
- 补充说明
- 项目py文件的命名必须是英文的(模块名称也是纯英文)
- py文件当作模块导入不需要考虑后缀
模块的导入
模块导入的两种句式
-
- import 模块名
- 详解:
1.执行文件是当前import所在py文件,被导入的是模块名.py文件 2.同一个程序反复导入相同的模块,导入语句只会执行一次 3.不加模块名就使用的执行文件的里的名字- 导入流程
import 模块名 print(模块名.py)- 优缺点
优点:通过模块名点的方式可以使用到模块内的所有名字,不会产生冲突。 缺点:模块名什么名字都可以使用,苦茶子都没有了。 -
- from 模块名 import 模块名里的名字(可以有多个)
- 详解:
1.执行文件是当前import所在py文件,被导入的是模块名.py文件里的名字- 导入流程
from 模块名 import 模块名内的名字 print(模块名内的名字)- 优缺点
优点:可以指定使用名字,不会被扒光。不用加模块名前缀 缺点:名字容易产生冲突
补充知识
- 1.起别名
- 多个模块由不同人文件名相同
from md import money as md_my from md1 import money as md1_my print(md_my) print(md1_my)- 原有文件名复杂
import mdddddddddd as md - 2.导入多个名字
- 多个模块功能相似才能一起导入,不然尽量分开
- 出自同一个模块可以一起导入
不同模块功能不同: import time, sys, os NO import time import os import sys YES 同一个模块: from md import money, read1, read2 YES - 3.全导入
- 需要使用模块名称空间很多的名字只能使用form...import...
from md import * *号表示所有 在模块文件中可以使用__all__ = [字符串的名字]控制*能够获取的名字
循环导入
- 两个文件彼此互导称为循环导入
- 循环导入没有准备好,就被使用会报错
- 尽量避免循环导入,万不得已就让所有名字提前做好准备。
文件类型的判断
- 所有py文件都自带__name__内置名
- 执行: 双下name的结果是双下main
- 被导入: 双下name的结果是模块名
- 双下name一般用于开发模块的作者测试自己的代码
if __name__ == '__main__': 当文件是执行文件的时候才会执行if的子代码 上述判断一般只出现整个程序的启动文件中 - pycharm中可以直接编写main按tab键自动补全
模块的查找
- 查找顺序
- 内存>>>内置>>> sys.path
1.导入一个文件,运行时删除该文件,还能使用 运行时,还在内存存了一份 import md import time time.sleep(15) print(md.money) 2.创建一个跟内置模块名相同的文件名 创建的模块文件尽量不要和内置发生冲突 from time import name print(name) 3.导入模块的时候要知道谁是执行文件 所有的路径都是参照执行文件的 import sys sys.path.append(r'目标文件所在路径') import mdd print(mdd.name) - 方式:
- 1.通用
sys.path.append(目标文件所在路径)- 2.form...import...句式
form 模块文件名字/模块内名字所在相对路径 import 模块文件名/模块内名字