模块简述


一、模块简述

  (一)、什么是模块

  模块是一系列功能的集合体,分为三大类

    1、内置模块

    2、第三方模块

    3、自定义模块

    一个python文件本身就是一个模块,文件名m.py,模块名叫m

  (二)、模块的表现形式

  1、使用python编写的.py文件,(一个py文件就是一个模块)

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

  3、把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py的文件,称为包,也是多个py文件的组合)

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

  (三)、为何要用模块

  1、内置与第三方模块,拿来即用,极大地提高了自己的开发效率

  2、自定义的模块

    可以将程序的各部分功能提取出来放到一个模块中为大家共享使用

二、如何使用模块

  (一)导入模块  

模块的导入方式有import md和from...import...两种

  1、import 句式

1、导入 

import md

2、运用

md.x

  模块被导入时会发生三件事

1.运行执行文件,产生一个执行文件的全局名称空间

2.运行被导入文件

3.导入文件中的名字放入到导入文件的名称空间

4. 在执行文件的名称空间中有一个md的变量指向导入文件的名称空间

  注意:       

1. 模块会执行,但是导入多次,只会执行一次

2. 在自己的名称空间中如果有与导入文件相同的名字,在调用的时候,指名道姓的调用,不会产生冲突的

  2、 from...import...句式

单个导入:from md import money

多个导入:from md import moeny,name,gender

  from...import句式首次被导入:
1. 产生一个执行文件的名称空间
2. 会运行导入文件
3. 产生一个导入的名称空间
4. 在执行文件中产生一个money,执行导入文件的money,导入文件中的其他没有被导入的不能在执行文件中使用,如果想使用,继续导入过来就可以使用

  (二)模块灵活运用的补充方式

  1、起别名

给模块名起别名  import mdddddddddddd as d 

给模块中的某一个名字起别名  from md import read1 as r

  起别名通常用来给名称过长的模块或变量使用,方便书写

  2、多个模块的连续导入

1、可以一行导入一个

    import time
    import os
    import sys

2、可以一行导入多个

模块:mport time,os,sys  注意:这里推荐是用一行导入一个,因为格式简明清晰

变量名:from mdddddddddddddddddddddddddd import a,b,c,d

  3、通用导入

from md import *

它的作用相当于import md,可以使用md里面所有的变量名

  (三)if __name__ == '__main__'的运用

__name__内置方法的特性:  

    如果print(__name__)当前所在文件是执行文件:打印__name__返回值为'__main__'(字符串类型)

    如果print(__name__)当前所在文件是导入文件,运行导入它的文件打印出的__name__返回值是被导入的模块名

根据其特性:

在执行模块中写入if __name__ == '__main__',可以通过if

在导入模块中写入if __name__ == '__main__',不可以通过if

  (四)循环导入问题

循环导入不允许出现

解决方式1:导入语句放到末尾

解决方式2:导入语句放在函数中

  (五)模块的查找顺序

  1、补充知识:

  sys模块  

  sys.path  相关路径集

  sys.path.append()  添加路径到相关路径集

  2、查找顺序

1. 先从内存中查找
2. 从内置中查找
3. 从sys.path中

  3、如果在执行文件中找不到导入模块,解决方案:

通用方法:

1、通过sys.path.append()添加导入文件路径到相关路径集

2、从当前级向下级导入模块的方法

from aaa import bbb

from aaa.bbb.ccc import ddd

3、从当前级向上级导入模块的方法

pass

  (六)其他注意事项

文件名不要和内置模块名冲突

pass