python 零基础学习之路-05 模块与包

一 模块

  1、模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能。

  2、模块的特点:从文件级别组织程序,更方便管理;拿来主义,提升开发效率。

  3、使用模块之import:模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行(import语句是可以在程序中的任意位置使用的,且针对同一个模块很import多次,为了防止你重复导入,python的优化手段是:第一次导入后就将模块名加载到内存了,后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块内的语句)

  4、在第一次导入模块时会做三件事,重复导入会直接引用内存中已经加载好的结果:

      1、为原文件(spam模块)创建新的名称空间,在spam中定义的函数和方法若是使用到了global时访问的就是这个名称空间。

      2、在新创建的命名空间中执行模块中包含的代码,见初始导入import spam。

      3、创建名字spam来引用该命名空间。

  5、使用模块之from...import:与import相比,唯一的区别就是使用from...import...则是将spam中的名字直接导入到当前的名称空间中,所以在当前名称空间中,直接使用名字就可以了、无需加前缀:spam。

  6、from...import *   即引入模块所有。

     被引用模块可以使用__all__来控制*(用来发布新版本),在spam.py中新增一行。

扫描二维码关注公众号,回复: 968669 查看本文章

     eg: __all__=['money','read1']   #这样在另外一个文件中用from spam import *就这能导入列表中规定的两个名字

  7、py文件区分两种用途:模块与脚本

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

     python为我们内置了全局变量__name__,
          当文件被当做脚本执行时:__name__ 等于'__main__'
          当文件被当做模块导入时:__name__等于模块名

     作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
          if __name__ == '__main__'

  8、模块搜索路径:

     模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块

二 包(了解,包随处可见)

  1、什么是包:包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来。创建包的目的不是为了运行,而是被导入使用,记住,包只是模块的一种形式而已,包的本质就是一种模块。

  2、包的使用import:

    eg:   import glance.db.models

    eg:   from glance.api import *

  3、绝对导入与相对导入: 

    绝对导入:以glance作为起始

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

  4、包以及包所包含的模块都是用来被导入的,而不是被直接执行的。而环境变量都是以执行文件为准的。

三 软件开发规范

猜你喜欢

转载自www.cnblogs.com/liuzeng/p/9067810.html