模块

模块的优点:
1、便于维护
2、将一个任务分解成为多个模块,便于实现团队协同开发,完成大规模程序
3、实现代码复用,一个模块完成后可以被反复调用

模块化编程的一般流程:
1、设计API,进行功能描述(不涉及代码,模块的作用,模块中涉及哪些类,类的作用,定义哪些函数,函数的作用,一般用文档字符串)
可以通过 模块.__doc__来获得文档字符串的内容
2、编码实现API中描述的内容
3、在模块中编写测试代码,并消除全局代码
4、使用私有函数实现不被外部客户端调用的函数模块

模块的创建和测试代码:
每一个模块都有一个名称,通过特殊变量__name__可以获取模块的名称。在正常情况下。,模块名字对应源文件名,仅有一个例外,就是当模块作为程序入口时(主程序,交互式提示符下)(在源代码内),他的__name__的值__main__。我们可以根据这个特性。将模块源代码文件中的测试代码进行独立的处理。(别的地方导入此模块名叫源文件名,在源代码内自己访问就叫__main__)

import导入的是模块
运用具体方法时不加模块名无法识别,使用时格式是 模块名.方法()
from…import 导入的是模块中的成员,函数或类
使用时可以直接识别,不需要添加模块名,就可以直接引用其中的函数/类
导入的本质是调用一个内置函数__import__()函数
动态导入时可以使用importlib模块

import importlib
a = importlib.import_module('math')#动态导入模块
print(a.pi)
b = importlib.reload('math')#重新加载该模块

包:
当一个项目中有很多模块时,我们把功能类似的模块放到一起,形成了包。包中必须含有__init__.py的文件夹。
包下面可以包含模块,也可以包含子包

导入包操作:

#import a.aa.modul_AA
#使用时必须加完整的名称来引用
#a.aa.module_AA.fun__AA()
#from a.aa import modul_AA
#可以直接使用模块名
#module_AA.fun__AA()
#from a.aa.modul_AA import fun_AA
#可以直接使用模块内函数名
#fun_AA()

from package import item 这种语法中,item可以是包,模块,也可以是函数、类、变量
import item1,item2 这种语法中item只能是包或者模块,不能是其他的

导入包的本质就是‘导入了包的__init__.py’文件(这个文件里可以写这个包需要统一执行的代码,一般只用作导入,不复杂化),也就是说,import package1意味着执行了包package1下面的__init__.py文件,这样,可以在__init__.py文件中批量导入我们需要的模块,,而不是一个一个导入
init.py的三个核心作用:

  1. 作为包的标识,不能删除。
  2. 用来实现模糊导入
  3. 导入包实质是执行__init__.py 文件,可以在__init__.py 文件中做这个包的初始化、以及
    需要统一执行代码、批量导入。

包内引用:
如果是子包内的引用,可以按相对位置引入子模块 以 aa包下的module_AA中导入a 包下内容为例:
from … import module_A #…表示上级目录 .表示同级目录
from . import module_A2 #.表示同级目录

当我们导入某个模块文件时, Python 解释器去哪里找这个文件呢?只有找到这个文 件才能读取、装载运行该模块文件。它一般按照如下路径寻找模块文件(按照顺序寻找,找 到即停不继续往下寻找):

  1. 内置模块
  2. 当前目录
  3. 程序的主目录
  4. pythonpath目录(如果已经设置了 pythonpath环境变量)
  5. 标准链接库目录
  6. 第三方库目录(site-packages 目录)
  7. .pth文件的内容(如果存在的话)
  8. sys.path.append()临时添加的目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值