第十六章、包

1. 包

什么是包

包(Package) 是一种组织代码的方式,用于将相关的模块(Module)组织在一起。

作用:

通过包,可以更好地管理大型项目中的模块,避免命名冲突。

包的分类

  1. 常规包
    • 包是一个文件夹(也叫目录)。
  2. 命名空间包(此课程不讲解)
    • 包是一个或多个.zip结尾的压缩文件包。

常规包

常规包是一个文件夹,包内的文件夹称为子包,包内的.py 文件则称为包内的模块。

说明

包一定是模块,模块一定不是包。

常规包示例

以下描述一个包的组织结构

mypack/
├── chat_tools
│   ├── chat_menu.py
│   ├── dingding.py
│   ├── __init__.py
│   └── wechat.py
├── __init__.py
├── menu.py
└── work_tools
    ├── __init__.py
    ├── pycharm.py
    └── wps.py

以下列出包文模块文件的名称和内容

文件: mypack/menu.py

def show_menu():
    print('1) 打开钉钉')
    print('2) 打开微信')
    print('3) 打开PyCharm')
    print('4) 打开Word')
    print('5) 打开Excel')

文件: mypack/__init__.py

'''
这是一个自己创建的包
这个包包含两个子包:
chat_tools子包存放的是聊天工具相关的模块;
work_tools子包存放的是工作相关的模块;
'''

def show_describe():
    '''此函数是包mypack内的函数'''
    print('mypack包内函数的示例!')

文件: mypack/chat_tools/chat_menu.py

def show_chat_menu():
    while True:
        print('1) 启动钉钉')
        print('2) 启动微信')
        print('3) 启动wps里面的Excel')
        print('0) 退出')
        sel = int(input('请输入选项:'))
        match sel:
            case 1:
                pass
            case 2:
                pass
            case 3:
                pass
            case 0:
                break
            case _:
                print('您的输入有误,请重新选择!')

文件: mypack/chat_tools/dingding.py

def start_dingding():
    '钉钉的启动函数'
    print('正在启动钉钉程序...')

文件: mypack/chat_tools/wechat.py

def start_wechat():
    '微信的启动函数'
    print('正在启动微信程序...')

文件: mypack/chat_tools/__init__.py

'''
这个是魏老师创建的聊天相关的子包
'''

文件: mypack/chat_tools/pycharm.py

'''
PyCharm启动相关的函数
'''

def start_pycharm():
    'PyCharm的启动函数'
    print('正在启动PyCharm程序...')

文件: mypack/chat_tools/wps.py

'''
金山的wps启动相关的函数
'''

__all__ = ['start_word']

def start_word():
    'word的启动函数'
    print('正在启动wps的word程序...')

def start_excel():
    'excel的启动函数'
    print('正在启动wps的excel程序...')

文件: mypack/chat_tools/__init__.py

'''
这个是魏老师创建的办公相关的子包
'''

__all__ = ['pycharm', 'wps']

视频讲解