模块1

一、模块简介

  1. 什么是模块

    模块是一系列功能的集合体,也可以看成是一堆函数的集合体。

 

  1. 模块的四种形式

    • 自定义模块——自己写的py文件,并在文件内写入一堆函数

    • 第三方模块——已被编译为共享库或DLL的C或C++扩展,pip install

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

    • 包——把一系列模块组织到一起的文件夹

 

二、import和from…import

  1. import首次导入发生的三件事

    • 以模块为准创造一个模块名称空间。

    • 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间。

    • 在当前执行文件中拿到一个模块名。

  2. Form…import…首次导入发生的三件事

    • 以模块为准创造一个模块的名称空间

    • 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间。

    • 在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用。

  3. 两种导入模块方式的异同

    • 相同点

      1. 两者都会执行模块对应的文件,两者都会产生模块的名称空间。

      2. 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关。

    • 不同点

      1. import需要加前缀;from…import…不需要加前缀,代码更精简

      2. From…import…容易与当前执行文件中名称空间中的名字冲突

 

三、循环导入问题

  1. 问题,无论运行下述哪个文件,都会报错。

    • m1文件

from m2 import b
    
a = 'a'
    • m2文件

from m1 import a
    
b = 'b'
  1. 解决方法一

    • m1文件

def func1():
    from m2 import b

a = 'a'
    • m2文件

def func2():
    from m1 import a
        
b = 'b'
  1. 解决方法二

    • m1文件

a = 'a'
from m2 import b
    • m2文件

b = 'b'
from m1 import a

四、模块的搜索路径

  • 如果模块的文件路径和执行文件不在同一个文件目录下,就会根据某个顺序在计算机中搜索模块。

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

    1. 从内存中已经导入的模块中找

    2. 内置模块

    3. 环境变量

 

五、python文件的两种用途

  1. 脚本,一个文件就是整个程序,用来被执行。

  2. 模块,文件中存放一堆功能,用来被导入使用。

原文地址:https://www.cnblogs.com/binyuanxiang/p/11608273.html