第十七天,模块

一 模块是什么:*****

  模块 是一组功能的集合

  python 中一个功能就是一个函数

  一个py文件就是一个模块

  例如:A.py  文件名 A.py 模块名 A

模块的分类:

  1.自定义模块*****

    (第三方模块也属于自定义 它是别的程序员写的)

    关注如何自定义

  2.内置模块 ****

    是c语言写的 然后连接到python解释器中

  3. 已经编译为DLL,c或c++ ***

    不需要知道怎么来的 会用就行

  4. 包 *****

    包实际上是包含一堆模块的文件夹

    之后详细将对于这四种模块 他们的使用方式 是一致的

二.如何定义模块:*****

  创造一个py 文件 把你的功能写到文件中

三、如何使用模块:*******

  import  关键字 用于导入模块到当前文件中

  例如:import time

当执行import做了什么?****

  1.创造一个命名空间

  2.执行被导入的py中的代码 将里面的名字和地址对应关系 存储到命名空间中

  3.在执行文件中 创造一个名字 该名字指向的地址就是 第一步创建的命名空间(模块的命名空间)

执行文件和被东安路的模块的命名空间 是相互独立的 ****

  在导入模块中 所有的名字使用的都是自己空间中的 和调用者无关

import 的其他写法*****

  1.import xxx as xxx

  给模块取别名 用于简化书写

  2.import xxx,xxxx

  一次导入多个模块

  3.from xxx,xxxx

    从模块中导入某个名字到当前名称空间中

    注意 要避免名称冲突

  4.from xxx import xxx,xxx,xx

    从模块中导入所有名称

    __all__用于控制 使用者可以使用那些名称

  5. from xxx import *

    从模块中导入所有名称

  6 from xxx import xx as xx

    取别名

  from 和import xx as xx

py文件的两种执行方式*****

  1 作为执行文件(右键run)

  2.作为模块被导入

  

  __name__这个名称 可以获取当前执行状态

  如果文件是__main__说明当前是执行文件

  否则 说明是作为模块

  于是乎有了以下代码

    if __name__=='__main__':

      print('作为执行文件')

    else:

      print('作为模块导入')

重复导入模块时   模块中的代码不会重复执行  仅在第一次导入时执行

模块的搜索顺序*****

内存中已经加载的 -> 内置模块 -> sys.path

通常我们编写项目是  会自己讲模块的路径加入到sys.path中

猜你喜欢

转载自www.cnblogs.com/gongcheng-/p/9774377.html