《Python学习手册 第五版》 -第23章 模块代码编写基础
上一章节讲解的是模块运作的逻辑说明,本章继续针对模块展开,
本章重点内容:
1、模块的创建
2、模块的使用:import、from语句
3、模块的命名空间
4、重新加载模块:reload基础
针对以上重点,接下来详细说明
1、模块的创建
上一章讲过,模块是python的程序文件,以后缀【.py】进行保存的文件,所以将代码存为这样的一个文件,就是一个模块了,可以很简单,代码如下:
关于模块的命名,因为模块是会导入其他程序使用的,所以尽量避免关键词命名,例如【if.py】,你当然可以创建这样的文件,但是不会被导入,因为系统会提示关键词,无法使用
2、模块的使用
模块的使用有两种方式,import和from,会有一些差别
首先,我们先看import的使用,具体代码示例如下:
再看下from的使用,具体代码示例如下:
另一种from使用的形式,具体代码如下:
以上方式代表不同的导入使用方式,import的导入,你会发现,要使用模块中的属性,就需要用【模块名.属性】的方式使用,负责会提示错误,代码示例如下:
而from则不用加模块名,直接调用属性名即可,就像是代码本身拥有一样,这两种方式各有利弊,from的方式可以减少代码的输入,比较如果有很多模块的导入,就不用写模块名称,尤其是模块名称很长的时候,而这样存在可能的风险,就是模块属性被覆盖,如果代码本身有定义函数,名称和导入模块的名称一样,就会出现冲突,而import的导入,就不会有命名冲突的情况,因为所有属性之前都有模块名,模块名是不一样的
from两种使用方式是针对你需求的模块属性,如果你很明确的知道使用模块的哪个属性,就直接导入即可,如果你不清楚,可以使用*,这个表示,导入模块的所有属性
3、模块的命名空间
模块有很多属性,如果你想了解模块的命名空间,可以通过命名空间字典查看:__dict__
具体代码示例如下:
其中,带双下划线的是系统自动创建,例如__name__,这是存放模块名称的,而没有双下划线的则是我们自己创建的,其中看到的是printer
如果一个模块命名空间比较多,你只想查看自己创建的属性时,可以通过筛选进行,具体代码示例如下:
4、重新加载模块:reload基础
为什么重新加载模块?模块如果导入,其实只会导入一次,什么叫导入一次?以下代码示例:
首先创建一个简单的模块,如下:
在另一个程序中导入该模块,并查看相关属性
如果我们将spam赋值为2,重新查看
如果我们再次导入模块,理论上spam应该等于1,我们看系统的运作,以下是完整代码:
你会发现,spam是2,而不是1,为什么?因为在一个程序中,模块只会导入一次,之后的导入,之后用系统中已经调整后的版本
如果你希望用最初的版本,那怎么办?用reload,可以重新导入
reload说明:它不同于import和from
1)reload在python中是一个函数,而不是一条语句
2)reload传入的参数是一个已经存在的模块对象,而不是一个新的名称
3)reload位于模块之中,必须导入才能使用
承接上面的例子,我们使用reload进行重新导入,具体代码示例如下:
重新加载后,spam就是原来模块中的数值了
以上就是本章重点内容的讲解,下章见!
《Python学习手册 第五版》 每章时间规划及完成进度:
2019.11.25-2019.12.01 第01章,已完成:《Python学习手册 第五版》 -第1章 问答环节
2019.12.02-2019.12.08 第02章,已完成:《Python学习手册 第五版》 -第2章 Python如何运行程序
2019.12.09-2019.12.15 第03章,已完成:《Python学习手册 第五版》 -第3章 你应如何运行Python程序
2019.12.16-2019.12.22 第04章,已完成:《Python学习手册 第五版》 -第4章 介绍Python对象类型
2019.12.23-2019.12.29 第05章,已完成:《Python学习手册 第五版》 -第5章 数值类型
2019.12.30-2020.01.05 第06章,已完成:《Python学习手册 第五版》 -第6章 动态类型
2020.01.06-2020.01.12 第07章,已完成:《Python学习手册 第五版》 -第7章 字符串基础
2020.01.12-2020.01.19 第08章,已完成:《Python学习手册 第五版》 -第8章 列表与字典
2020.01.20-2020.01.26 第09章,已完成:《Python学习手册 第五版》 -第9章 元组、文件与其他核心类型
2020.01.27-2020.02.02 第10章,已完成:《Python学习手册 第五版》 -第10章 Python语句简介
2020.02.03-2020.02.09 第11章,已完成:《Python学习手册 第五版》 -第11章 赋值、表达式和打印
2020.02.10-2020.02.16 第12章,已完成:《Python学习手册 第五版》 -第12章 if测试和语法规则
2020.02.17-2020.02.23 第13章,已完成:《Python学习手册 第五版》 -第13章 while循环和for循环
2020.02.24-2020.03.01 第14章,已完成:《Python学习手册 第五版》 -第14章 迭代和推导
2020.03.02-2020.03.08 第15章,已完成:《Python学习手册 第五版》 -第15章 文档
2020.03.09-2020.03.15 第16章,已完成:《Python学习手册 第五版》 -第16章 函数基础
2020.03.16-2020.03.22 第17章,已完成:《Python学习手册 第五版》 -第17章 作用域
2020.03.23-2020.03.29 第18章,已完成:《Python学习手册 第五版》 -第18章 参数
2020.03.30-2020.04.05 第19章,已完成:《Python学习手册 第五版》 -第19章 函数的高级话题
2020.04.06-2020.04.12 第20章,已完成:《Python学习手册 第五版》 -第20章 推导和生成
2020.04.13-2020.04.19 第21章,已完成:《Python学习手册 第五版》 -第21章 基准测试
2020.04.20-2020.04.26 第22章,已完成 :《Python学习手册 第五版》 -第22章 模块:宏伟蓝图
2020.04.27-2020.05.03 第23章,已完成
以下链接,可以供你了解这个学习笔记的所有章节最新进度