模块是更高级的封装
容器 ——>是对数据的封装,字符串、序列等
函数 ——>是对语句的封装
类 ———>是对方法和属性的封装
模块就是程序,即对代码的封装,每一个.py文件都是一个模块,对一套程序的封装
模块应该跟调用的程序在同一个文件夹下,模块名就是该.py文件的文件名,不需要带上后缀
命名空间,即该模块里面的函数的调用,需要 模块名.函数名
定义模块名,如:
将 下面函数保存在hello.py的文件中,该文件就是一个模块
在hello.py同一文件夹下创建一个调用 该模块的文件
调用的方法为:
import hello
hello.hi()
则会输出该函数后面的内容
如何导入模块
以上即为定义模块和调用模块的过程,注意定义的模块文件和调用该模块的文件必须在一个文件夹下
导入模块的方法:
1.import 模块名
2.import 模块名 as a 将模块名命名为a
3. from 模块名 import 函数名
模块的主要作用:封装组织各块代码
实现代码的重复利用
注意,每一个模块在其完成之后要对其单独进行测试
如果在主程序中使用__name__变量,得到的是一个__main__
在模块中调用__name__得到的是这个模块的名字,即全称
如上面的温度转换模块,如果:
import Temperatureconvert as a
则 a.name 将得到模块名称Temperatureconvert
此处主要区分在模块中__name__为模块名,则不相等,测试函数不糊调用,但是在主程序中,name=main,测试函数会调用
搜索路径
模块的导入需要有一个搜索路径的过程,在导入 的过程中,python会自动搜索所需导入的模块的路径;
通过sys模块来实现搜索
路径以列表的形式存放
一般模块都集中放在site-packages文件夹中
以上列表即为搜索的路径,从其中找是否有该模块,如果没有则导入失败,该列表的第一个元素为所运行的idle所在位置,因此当模块跟调用程序在一个文件夹里时,模块能正常导入,因为路径已经存在与第一个元素的
如果运行的文件跟需要导入的文件不在一个文件夹,则不能直接导入,需要将绝对路径添加到path中:
需要先 import sys #sys模块为搜索路径的模块
包
包的概念比模块大一级;用于存放模块
创建方法:
1.创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字
2.在上面创建的文件夹中创建一个__init__.py的文件,内容可以为空 #用来告诉python这个文件夹为一个包的文件夹
3.将相关的模块放入该文件夹中
导入包的模块:#即运行文件跟模块文件不在同一个文件夹下的时候,且模块个数比较多的时候统一用包处理
import 包名.模块名 as a
python标准库,即python自带的模块
如何独立的探索模块
模块名.file #输出结果为该模块的源代码所处的位置
模块名.__all__输出结果为过滤掉该模块里面的某些函数
python中的33个保留字
False as continue else from in not return yield None assert def except global is or try
True break del finally if lambda pass while and class elif for import nonlocal raise with