zoukankan      html  css  js  c++  java
  • 第三十三篇 包

    一、面向过程编程知识点回顾

    面向过程编程:类似于工厂的流水线,机械化、线性化,按照一定的顺序,一步一步的实现想要的效果

    二、为什么需要包

    1.我们目前写的项目都是一小块一小块的函数体代码,函数比较多,功能比较杂,因此需要进行分类,需要将一个个函数放入.py文件中,这样函数版代码就变成了更加简洁、清晰的文件版代码,也就是将许多函数分装在多个模块中;

    2.当模块比较多时,为了更方便的维护代码和导入模块,我们就需要将这些模块放入一个文件夹中,更方便查找、维护和导入,这就是文件夹版代码,也即是包。

    3.包本质上也是模块,只是需要先将要用的模块导入_init_.py文件,导入包时更加繁琐一定

    三、如何使用包

    1.和模块一样都是使用:import / from...import...

    2.包用python package创建,也就是文件夹,单纯的文件夹无法作为模块,必须依托文件夹自带的_init_.py文件

    3.包会自带__init__.py文件,这个文件可以近似的看作是这个包本身,如果我们需要包中的某个模块,则需要先将该模块导入__init__.py文件,才能在执行文件中导入这个包中的指定模块

    四、包被导入的时候发生的三件事

    '''
    以aaa命名的包为列
    1. 打开aaa里的__init__.py文件
    2. Python解释器运行解释__init__.py文件,把__init__.py里的名字丢入aaa模块的名称空间
    3. 导入aaa其实就是__init__里的名字
    '''
    

    需要注意的是,当我们写了一个模块,但是模块太大了,然后放入包内了,别人在你改动之后使用你的模块,就必须得将用模块名m1点出来模块方法改成用包aaa点出模块名来找模块方法

    五、包的特点

    1.和模块不同点是:模块是直接打开文件,而包打开里面的__init__.py文件

    2.包的好处:不改变模块原先的导入方式,并且简化模块开发者的管理复杂度

    3.模块本质是文件,包本质是文件夹,但是包其实就是特殊的模块

    六、导入包的路径

    1.相对路径的好处:万一如果包的名字改变了,使用相对路径不会对包内的文件造成任何影响
    好处(需要使用sys模块进行添加路径)

    # 执行文件test.py中
    # 有模块m1和模块m2在包aaa中,包aaa与执行文件同属一个文件夹A下,可直接导入需要的模块
    import m1  # f1()函数在模块1中
    m1.f1()
    
    # 执行文件test.py中
    # 当包aaa与执行文件不在同一个目录下时,则需要用到sys模块(假如此时包aaa在文件夹B中)
    import sys
    sys.path.append('包aaa的路径')     # 只需要包aaa的路径且以字符串形式添加
    import m1
    m1.f1()
    

    2.使用绝对路径相对于执行文件而言,而相对路径相对于文件本身而言

    # aaa/__init__.py
    
    from aaa.m1 import func1
    from aaa.m2 import func2
    

    3.相对路径:

    # .当前(也就是可用于导入同级目录下的模块)
    # ..上一级
    # ...上一级的上一级
    
    # .号前面必须得是一个包,不能是一个模块
    # 当文件是执行文件时,不能用相对路径
    
    
    # 任何包内
    # */__init__.py
    
    from .m1 import func1
    from .m2 import func2
    
  • 相关阅读:
    复利计算- 结对
    《构建之法》第4章读后感
    复利计算--单元测试
    实验一 命令解释程序的编写实验
    Scrum 项目准备4.0
    Scrum 项目准备3.0
    scrum 项目准备2.0
    【操作系统】实验三 进程调度模拟程序
    scrum 项目准备1.0
    Scrum团队成立
  • 原文地址:https://www.cnblogs.com/itboy-newking/p/11038842.html
Copyright © 2011-2022 走看看