Python模块 Module

模块定义:

模块是一个包含有一系列数据、函数、类等组成的程序组 
模块是一个文件,模块文件名通常以.py结尾. 

 作用:

让一些相关的数据,函数,类等有逻辑的组织在一起,使逻辑结构更加清晰
模块中的数据,函数,类等可提供给其它模块或程序使用 

模块的分类: 

内建模块(builtins) 在解析器的内可以直接使用
标准库模块, 安装python时已安装且可以直接使用
第三方模块(通常开源),需要自己安装
用户自己编写的模块(可以作为其它人的第三方模块) 

模块的导入语句

import 语句 

语法: 

import 模块名1 [as 模块新名1], 模块名2 [as 模块新名2], .... 

 用法:

    模块名.属性名
    或
    模块名.函数属性名(实参传参)

dir(obj) 函数返回所有属性的字符串列表
help(obj) 函数可以查看模块的相关文档字符串

from import 语句 

语法:
    from 模块名 import 模块属性名1 [as 属性新名1], 模块属性名2 [as 属性新名2], ....
作用:
    将某模块的一个或多个属性导入到当前模块的作用域 

 from import * 语句

 语法:
    from 模块名 import *
 作用:
    将某模块的所有属性导入到当前模块

 dir 函数:

 dir([对象])  返回一个字符串的列表

  说明:
    如果没有给参数调用,则返回当前作用域内的所有变量的列表
    如果给定一个对象为作参数,则返回这个对象的所有变量的列表
       1) 对于一个模块,返回这个模块的全部属性
       2) 对于一个类,返回这个类的所有变量,并递归基类对象的所有变量
       3) 对于其它的对象,返回所有类变量和基类变量

自定义模块并导入

 注意事项: 
    自定义模块的文件要求以.py结尾,文件名必须是标识符的规则

导入 语句 import 语句等 搜索块的路径顺序 

搜索顺序:
    1. 搜索程序运行时的路径(当前路径)
    2. sys.path 提供的路径
        sys.path是一个列表,里面放的都是模块的搜索路径
    3. 搜索内建模块 

 模块的加载过程:

1. 在模块导入时,模块的所有语句都会执行
2. 如果一个模块已经导入,则再次导入时不会重新执行模块内的语句 

模块以导入和执行的过程: 

 1. 先搜索相关的路径,找到模块名.py
  2. 判断是否有此模块对应的.pyc文件。如果.pyc比.py文件新,则直接加载.pyc文件
  3. 否则 用模块.py,文件生成.pyc,并加载执行

pyc python的编译
             编译                 解释执行
  mymod.py  --------> mymod.pyc  --------> python3

模块的属性

 模块的 __doc__ 属性
    此属性用于绑定模块的文档字符串

模块的 __file__属性
    此属性用于记录模块对应的文件路径名

模块的 __name__属性 
    __name__属性 用来记录模块自身名字

    作用:
      1. 记录模块名
      2. 用来判断是否为主模块
    说明:
      当此模块为主模块(也就是第一个运行的模块时)运行时, __name__绑定 '__main__'
      当此模块不是主模块时,而是被其它模块导入时,此时 __name__ 绑定模块名

模块的 __all__列表
  模块中的 __all__列表是一个用来存放可导出属性的字符串列表

  作用:
    当用 from xxx import *语句导入时,只导入 __all__ 列表内的属性

 模块的隐藏属性

模块中以'_'开头的属性,在from xxx import * 导入时,将不被导入,通常称这些属性为隐藏属性

包(模块包) package 

包的定义 

包是将模块以文件夹的组织形式进行分组管理的管理方法 

作用: 

将一系列模块进行分类管理,有利于防止命名冲突
可以在需要时加载一个或部分模块则不是全部模块

包示例: 

 mypack/
        __init__.py
        menu.py
        games/
            __init__.py
            contra.py
            supermario.py
            tanks.py
        office/
            __init__.py
            word.py
            excel.py
            powerpoint.py

__init__.py 文件 

 __init__.py是常规包内必须存在的文件
 __init__.py会在包加载时自动调用

  作用:
    1. 编写此包的内容
    2. 在内部填写文档字符串
    3. 在__init__.py文件内可以加载此包所依懒的一些其它模块

包的导入 

 同模块的导入规则
  # import 语句
  import 包名 [as 包新名]
  import 包名.模块名 [as 模块新名]
  import 包名.子包名.模块名 [as 模块新名]

  # from import语句
  from 包名 import 模块名 [as 模块新名]
  from 包名.子包名 import 模块名 [as 模块新名]
  from 包名.子包名.模块名 import 属性名 [as 属性新名]

  # from import *语句
  from 包名 import *
  from 包名.模块名 import *
  ...

导入包时的索引路径顺序: 

 1. 搜索程序的当前路径 
  2. sys.path 提供的路径

__init__.py内的 __all__ 列表 

 作用:
    用来记录此包中有哪儿些子包或模块在用from import *语句 时被导入
  说明:
    __all__列表只对 from xxx import *语句起作用

包的相对导入: 

 包的相对导入是指包内模块的相互导入

  语法:
    from 相对路径包或模块 import 属性或模块名
    from 相对路径包或模块 import *
  相对路径
    . 代表当前目录
    .. 代表上一级目录
    ... 代表上二级目录
    .... 以此类推
    注: 相对导入时不能超出包的外部

猜你喜欢

转载自blog.csdn.net/py_1995/article/details/84060930