day14-模块和包

一、模块介绍

二、软件开发规范

 

一、模块介绍

1.1 什么是模块

就像我们小时候玩的乐高积木,我们可以通过乐高积木拼小机器人,拼小飞机等等,每一个不同色彩大小的积木就可以称之为模块,反过来看,我们想做一个功能全面的购物车程序,我们可以在一个py文件里写出来,但这样看起来太臃肿了,而且可读性差,不便于理解,所以我们可以通过函数把每一个小功能块进行细分,然后把功能相近或者有类似作用的小功能块放在一起,这个就是一个模块,所以模块就是遇阻功能的结合体,通过导入模块,我们可以来调用模块里预知好的功能。

比如我们的time模块,里面包含了时间相关的一些功能,我们通过import time 的方式来调用

1.2 模块的分类:

1、用py写的.py的文件

2、把一套的py文件放到一个文件夹里,打包成一个包

3、使用c语言编写并连接到python解释器的内置模块

4、已被编译成共享库或DLL的C或C++扩展

 

1.2 为什么要用模块?

1、通过调用别人已经写好的模块,可以极大的提升开发效率

我们不需要每次都从最底层开始写起,而是通过拼接半成品的模块,加上一些其它功能块就能实现预期功能

2、分门别类,更方便管理

我们自己开发的程序有的可能非常大,需要把它分成一块一块,同时有的功能可能被重复调用,这个时候做成模块,就可以大幅降低我们的重复低效的工作,也方便后期维护。

 

1.3 怎么使用模块?

1.3.1 使用import

a)可以通过调用 import kiki 来调用kiki.py

b)调用的过程:

--在内存中创建一个新的空间名称把kiki的源文件放进去

--当使用import kiki时,初始化kiki并执行模块中的代码

--创建名字kiki来引用该命名空间

c)独立的空间名称

kiki与kiki.money不冲突

d)为模块取别名

如果模块原本的名字很长很难记,可以as的方式,比如:import kikikikiki as ki 将起重命名为ki,这样对于后期的编写扩展很有帮助

e)一行导入多个模块

import time、sys、os

虽然上面的调用是可行的,但是不推荐,如果他们之间确实有关联可以这么写,不然最好一行行引用,方便后期的识别

 

1.3.2 from...import...

a)使用方法

from :某个地址或者某个模块,import 某个模块或者模块内的函数或者变量

b)与import 对比

好处:使用起来更方便

坏处:容易跟当前执行文件中的变量名冲突

c)也支持as的重命名

d)一行导入多个名字

同上建议,除非名字之间有联系,否则不推荐一行引入多个模块

e)全部导入

from kiki import *  把kiki中所有不时以下划线开头的名字都导入当前的位置

不推荐这种读法,会导致之前定义的变量名被覆盖,而且可读性很差

 

模块的搜索路径:

内存中已经加载的模块=>内置模块=>sys.path路径中包含的模块

 

二、软件开发规范

soft/
├── bin                        # 程序执行文件目录
│   └── start.py               # 程序开始执行脚本文件
├── conf                       # 配置文件目录
│   ├── config.ini             # 配置文件
│   ├── my_log_settings.py     # 日志文件配置脚本
│   └── settings.py            # 配置脚本
├── core                       # 核心模块
│   ├── src.py                 # 核心功能脚本 核心逻辑文件
│   └── __init__.py
├── db                         # 数据--文件目录
├── lib                        # 库文件目录
│   └── common.py              # 库脚本文件 公共的功能
└── log                        # 日志目录
    └── all2.log               # 日志文件
--readme              # 文本文件,介绍项目

 

启动文件一般放在bin里,或者直接放到根目录下

# 调用sys和os模块
import
sys import os # 获取当前所在位置的根目录 BASE_DIR = os.path.dirname(os.path.dirname(__file__)) # 获取项目的根目录 sys.path.append(BASE_DIR)              # 将项目的根目录添加到环境变量中
# 导入用户功能层的src.py文件 from core import src

if __name__ == '__main__': src.run() # 执行src中的run方法启动程序

 

posted @ 2019-07-16 19:18  辕子  阅读(133)  评论(0编辑  收藏  举报