在现在的计算机编程语言中都会出现这个模块话的概念,当然在我学习的前端技术中也有这个模块,模块话,模块打包等等。
现在我也来总结一下自己学习python中模块的知识点
一、模块:就是一个包含python代码,后缀名是.py的python文件
优点:这个模块的优点和其他语言都类似:程序太大需要拆分程序代码块这样可以帮助程序员对整个项目或一个大功能的开发;模块化的代码可以重复利用;当作命名中间使用,在这个模块中和另一个模块中有出现相同命名的变量时,不会相互影响。
如何定义:只要是.py文件就是一个模块
建议:
1、在模块中最好实现的功能要单一;
2、类,相似功能的组合,或者相似业务的;
3、模块的最后要有一个测试代码;
如何使用模块:
1、import 模块文件名
模块文件名.funcname() --->这是调用模块中的方法
模块文件名.className --->同样也能类似的实例模块中的声明的类
2、import 模块名 as 别名(这是在引入模块的时候给模块取一个别名,为了不使模块名和代码中的变量名不重复)
3、from 模块名 import funcname,className(选择性导入模块中的方法或类)
4、from 模块名 import * (导入模块中的所有资源)
注意点:
在模块中也有需要任何调用等操作就可以执行的代码行,但是这些代码行在导入模块的时候就会立马执行,但是当前代码中无需执行那些代码怎么办?
if __name__ == "__main__":
模块的搜索路径:
import sys
sys.path ----> 获取路径列表
sys.path.append('路径') ----.添加搜索路径
模块的加载顺序:
1、搜索内存中已经加载好的模块
2、搜索python的内置模块
3、搜索sys.path路径
二、包:就是将多个模块(python文件)放在一个文件夹里的就是包
就好比多个模块文件实现了加减乘除等小功能,合在一起生成一个包,而这个包就实现了整个计算的功能。
自定义包(结构):
|---包
|---|--- __init__.py 包的标志文件(必须要有的文件)
|---|--- 模块1
|---|--- 模块2
|---|--- 子包(子文件夹)
|---|---|--- __init__.py 包的标志文件
|---|---|--- 子包模块1
|---|---|--- 子包模块2
包的导入:
1、import 包名
2、import 包名 as 别名
3、import 包名.模块名
4、import 包名.模块名 as 别名
5、from 包名 import 模块1,模块2,模块3
这种方法不会执行__init__.py中的内容
6、from 包名 import *
这种导入方法会执行__init__.py中的代码
在调用这个包中的方法的时候只需要直接funcname() 或 className() 就好,但是这样就会有一个问题,万一在代码中有相同名字的方法名和类型就尴尬了!!!
7、from 包名.模块名 import *
故名思意,就是导入包的某个模块中的所有
__all__ 的用法:
a. 在使用from package import * 的时候, * 可以导入的内容
b. __init__.py中如果文件为空, 或者没有 __all__, 那么只可以把__init__中的内容导入
c. __init__ 如果设置了__all__的值,那么则按照__all__ 指定的子包或者模块进行加载 如此则不会载入__init__中的内容
d. __all__=['module1', 'module2', 'package1'.........]
在开发环境中经常会所以用其他模块,可以在当前包中直接导入其他模块中的内容:
import 完整的包或者模块的路径