目录
1.模块
1.1模块介绍
2.模块导入
1.3__name__
2.包
2.1什么是包
2.2导入包语法
2.3导入包的本质
2.4__init__文件
1.模块
1.1模块介绍
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。
为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。而这样的一个py 文件在Python中称为模块(Module)。
模块是组织代码的更高级形式,大大提高了代码的阅读性和可维护性。
模块一共四种:
- 解释器内建模块
- python标准库
- 第三方模块
- 应用程序自定义模块
另外,使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。
2.模块导入
'''
# 方式1:导入一个模块
import 模块名
import 模块名 as 别名
# 方式2:导入多个模块
import (
模块1
模块2
)
import 模块1,模块2
# 方式3:导入成员变量
from 模块名 import 成员变量
from 模块名 import *
'''
导入模块时会执行模块,多次导入只执行一次。?
1.3__name__
__name__ 是python内置变量,存储的是当前模块名称。
对于很多编程语言来说,程序都必须要有一个入口。像C,C++都有一个main函数作为程序的入口,而Python作为解释性脚本语言,没有一个统一的入口,因为Python程序运行时是从模块顶行开始,逐行进行翻译执行,所以,最顶层(没有被缩进)的代码都会被执行,所以Python中并不需要一个统一的main()作为程序的入口。
在刚才的案例中三个模块都打印一次__name__
2.包
2.1什么是包
当一个项目中模块越来越多,维护和开发不是那么高效的时候,我们可以引入一种比模块更高级语法:包。
包是对相关功能的模块py 文件)的组织方式。
包可以理解为文件夹,更确切的说,是一个包含__init__ 文件的文件夹。
2.2导入包语法
import 包名[.模块名 [as 别名]] from 包名 import 模块名 [as 别名] from 包名.模块名 import 成员名 [as 别名]
案例:将上面案例中的cal .py 文件放到utils 包中管理,logger.py 放到logger 包中管理。
2.3导入包的本质
如果将main.py 放在一个main包下,运行会报错。根本原因是无论导包还是调用模块都是解释器依赖sys.path 的路径进行查找,而python解释器运行某个程序时会将该程序的启动文件的目录加入到sysy.path 中.所以启动文件的同级目录或者文件才可以调用。
所以这种目录结构下需要构建模块路径:
2.4__init__文件
__init__.py 该文件的作用就是相当于把自身整个文件夹当作一个包来管理,每当有外部导入的时候会自动执行里面的代码。
主要功能:
- 标识该目录是一个python的模块包(module package)
- 简化模块导入操作
- 控制模块导入
- 偷懒的导入方法
__all__ ?关联了一个模块列表,当执行?from xx import * ?时,就会导入列表中的模块。
? ?5.配置模块的初始化操作
在了解了__init__.py 的工作原理后,应该能理解该文件就是一个正常的python代码文件,因此可以将初始化代码放入该文件中。
?
|