模块和包

 

1、什么是模块

    模块是一系列功能的集合体

    常见的模块形式(自定义模块、第三方模块、内置模块):

        1、一个module.py文件就是一个模块,文件名是module.py,而模块名是module

        2、一个包含有__init__.py文件的文件夹也是模块

 

        3、已被编译为共享库或DLL的C或C++扩展

        4、使用C编写并链接到python解释器的内置模块

 

 

2、为什么要用模块

    1、用第三方或者内置的模块是一种拿来主义,可以极大地提升开发效率

    2、自定义模块即将我们自己程序中需要用到的公共的功能写入一个python文件

        然后程序的各部分组件可以通过导入的方式来引用/重用自定义模块中的功能

 

 

 

3、如何用模块

    导入的方式有两种

    import 模块名

    from 模块名 import 具体的功能

 

 4 模块的搜索路径

一个py文件就是一个模块,在导入时必须从某一个文件夹下找到该py文件

模块的搜索路径指的就是在导入模块时需要检索的文件夹们

 

导入模块时查找模块的顺序是:

    1、先从内存中已经导入的模块中寻找

    2、内置的模块

    3、环境变量sys.path中找

        强调:sys.path的第一个值是当前执行文件的所在的文件夹

5  编写好的一个python文件可以有两种用途:
    一:脚本,一个文件就是整个程序,用来被执行
    二:模块,文件中存放着一堆功能,用来被导入使用

6包

6.1、什么是包

    包是模块的一种形式,包的本质就是一个含有__init__.py文件的文件夹

 

 

6.2、为什么要有包

      包是模块的一种形式,即包是用来被导入的,但包的本质就是一个文件夹(文件夹的作用就是用来存放文件的,包内所有的文件都是用来被导入使用的)

 

6.3、如何用包

    导入包就是在导包下的__init__.py

    import ...

    from ... import...

 

   6.4 主要的问题:

        1、包内所有的文件都是被导入使用的,而不是被直接运行的

        2、包内部模块之间的导入可以使用绝对导入(以包的根目录为基准)与相对导入(以当前被导入的模块所在的目录为基准)

            推荐使用相对导入

        3、当文件是执行文件时,无法在该文件内用相对导入的语法

            只有在文件时被当作模块导入时,该文件内才能使用相对导入的语法

 

        4、凡是在导入时带点的,点的左边都必须是一个包

                import aaa.bbb.m3.f3 # 错误

7、绝对导入和相对导入

我们的最顶级包glance是写给别人用的,然后在glance包内部也会有彼此之间互相导入的需求,这时候就有绝对导入和相对导入两种方式:

绝对导入:以glance作为起始

相对导入:用.或者..的方式最为起始(只能在一个包中使用,不能用于不同目录内)

例如:我们在glance/api/version.py中想要导入glance/cmd/manage.py




posted on 2018-06-20 16:24  阿乐的博客园  阅读(91)  评论(0编辑  收藏  举报

导航