模块
- 一个模块就是一个包含pyho代码的文件,后缀名hi.py就可以,模块就是一个python文件
- 为什么要用模块?
- 程序太大,编写维护非常不方便,需要拆分
- 模块可以增加代码重复利用的方式
- 当命名空间使用避免冲突
- 如何定义模块
- 就是一个普通文件,任何代码可以直接书写
- 不过根据模块的规范,最好在模块中编写以下内容。
- 函数(单一功能)
- 类(相似功能的组合,或者类似业务模块)
- 测试代码
- 如何使用模块
- 模块直接导入,import模块之后,运行的时候直接就在程序中执行了,相当于直接将模块的代码直接粘贴到了当前代码的前边
- 使用类:模块名.类名
- 使用函数: 模块名.函数名
- import 模块 as 别名
- from 模块名 import 函数名/类名(此时就不用在程序中使用模块名为前缀了)
- 导入所有:from 模块名 import *(就不用了增加模块名字作为前缀了)
if name == 'main’的使用
- 可以有效避免模块代码被导入的时候被动执行的问题
- 建议所有程序的入口都以此代码为入口
模块的搜索路径和存储
- 什么是模块的搜索路径
- 加载模块的时候,系统会在哪些地方寻找此模块
- 系统默认的模块搜索路径
- import sys
- sys.path #属性可以获取路径
包
-
包是一种组织管理代码的方式,包里边存放的是模块
-
用于将模块包含在一起的文件夹就是包
-
包的导入操作
-
import 包的名字
- 直接导入一个包,可以使用__init__.py中的内容
- 使用方式是:
包名.函数名
包名.类名.函数名
-
import 包名 as 别名
- 注意:这种做法是默认对__init__.py内容的导入
-
import 包名.模块名
- 包名.模块名.函数名/类名
-
from … import 导入
-
from 包 import 模块1,模块2,模块3.。。。。
-
这种方法不执行’init’的内容
-
from 包 import *
-
导入当前包里’init.py’文件里所有的函数和类,但是不导入包里的其他模块。
-
使用方法
- 函数名()
- 类名().函数名()
- 类名()
-
from 包名.模块名 import *
- 导入包中指定模块的所有内容
- 使用方法
函数名()
类名.函数名()
-
-
-
在开发环境中经常会用到其他模块,可以在当前包中直接导入其他模块的内容
- import 完整的包或者模块的路径
-
‘init’的用法
- 在使用from 包名 import * 的时候可以导入的内容
- ‘all.py’中如果文件为空,或者没有‘all’,那么只可以把‘init’中的内容导入
- ‘init’如果设置了“all”的值,那么则按照‘all’指定的子包或者模块进行,如此则不会载入‘init’中的内容
- ‘all = ['模块1’,‘模块2’,‘模块3’。。。]
命名空间
- 用于区分不同位置不同功能,但是相同名称的函数或者变量的一个特定前缀
- 作用是防止命名冲突