Python中什么是包?导入包的本质及语法!
老男孩IT教育
技术博客
2021年6月16日 17:39
学习Python的时候,相信大家都听说过“包”这个字。那么什么是包?导入包语法是什么?本文为大家详细讲解一下,希望对你们有所帮助。
学习Python的时候,相信大家都听说过“包”这个字。那么什么是包?导入包语法是什么?本文为大家详细讲解一下,希望对你们有所帮助。
什么是包?
当一个项目中模块越来越多,维护和开发不是那么高效的时候,我们可以引入一种比模块更高级语法:包。
包是对相关功能的模块py文件)的组织方式。
包可以理解为文件夹,更确切的说,是一个包含__init__文件的文件夹。
导入包语法
import 包名[.模块名 [as 别名]]
from 包名 import 模块名 [as 别名]
from 包名.模块名 import 成员名 [as 别名]
案例:将上面案例中的cal .py文件放到utils包中管理,logger.py放到logger包中管理。
-- demo
main.py
-- utils
cal.py
-- logger
logger.py
# 方式1
from utils import cal
ret = cal.add(2,5)
print(ret)
# 方式2
import utils.cal
ret = utils.cal.add(4,6)
print(ret)
# 方式3
from utils.cal import add
ret = add(3,5)
print(ret)
导入包的本质
如果将main.py放在一个main包下,运行会报错。根本原因是无论导包还是调用模块都是解释器依赖sys.path的路径进行查找,而python解释器运行某个程序时会将该程序的启动文件的目录加入到sysy.path中.所以启动文件的同级目录或者文件才可以调用。
所以这种目录结构下需要构建模块路径:
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
思考:
1、如何在cal.py中导入同级目录模块?
2、导入模块的执行顺序?
__init__文件
__init__.py该文件的作用就是相当于把自身整个文件夹当作一个包来管理,每当有外部导入的时候会自动执行里面的代码。
主要功能:
1.标识该目录是一个python的模块包(module package)
2.简化模块导入操作
3.控制模块导入
4.偷懒的导入方法
__all__ 关联了一个模块列表,当执行 from xx import * 时,就会导入列表中的模块。
5.配置模块的初始化操作
在了解了__init__.py的工作原理后,应该能理解该文件就是一个正常的python代码文件,因此可以将初始化代码放入该文件中。
老男孩Python课程涉及哪些内容?主要包括Python开发基础、Python高级编程&数据库开发、前端开发、Web框架开发、爬虫开发、全栈项目实战、数据分析、人工智能、自动化运维&开发等。
推荐阅读:
