zoukankan      html  css  js  c++  java
  • python的模块定义及分类

    一、什么是模块?

      储着很多常用的功能的py文件,就是模块。 模块就是文件,存放一堆常用的函数。

      一个函数就是一个功能,那么把一些常用的函数放在一个py文件中,这个文件就称之为模块,模块就是一些常用功能的集合体。

    二、为什么要使用模块?

      1、从文件级别组织程序,更方便管理。

        随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用。  

      2、拿来主义,提升开发效率。

        同样的原理,我们也可以下载别人写好的模块然后导入到自己的项目中使用,这种拿来主义,可以极大地提升我们的开发效率,避免重复造轮子。

    三、模块的分类

      Python语言中,模块分为三类:

        第一类:内置模块,也叫做标准库。此类模块就是python解释器给你提供的,比如我们之前见过的time模块,os模块。标准库的模块非常多(200多个,每个模块又有很多功能)。

          第二类:第三方模块,第三方库。一些python大神写的非常好用的模块,必须通过pip install 指令安装的模块,比如BeautfulSoup, Django,等等。大概有6000多个。

          第三类:自定义模块。我们自己在项目中定义的一些模块。

    四、import与from....import的区别

      import:中文就是导入的意思

        例如:import os

      from...import..:从某个模块(文件)中导入某个函数

        例如:from view import Book

      如何解决重复导入:

        针对同一个模块很import多次,为了防止你重复导入,python的优化手段是:第一次导入后就将模块名加载到内存了,后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块内的语句。

    五、py文件的功能

      python模块的文件名后缀就是py。例如:test.py

      编写好的一个python文件可以有两种用途:
         一:脚本,一个文件就是整个程序,用来被执行(比如你之前写的模拟博客园登录那个作业等)
         二:模块,文件中存放着一堆功能,用来被导入使用

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

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

    六、模块的应用规则

      Python中引用模块是按照一定的规则以及顺序去寻找的。

        这个查询顺序为:先从内存中已经加载的模块进行寻找找不到再从内置模块中寻找,内置模块如果也没有,最后去sys.path中路径包含的模块中寻找。

        它只会按照这个顺序从这些指定的地方去寻找,如果最终都没有找到,那么就会报错。

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

      模块的查找顺序

    1. 在第一次导入某个模块时(比如tbjx),会先检查该模块是否已经被加载到内存中(当前执行文件的名称空间对应的内存),如果有则直接引用(ps:python解释器在启动时会自动加载一些模块到内存中,可以使用sys.modules查看)

    2. 如果没有,解释器则会查找同名的内置模块

    3. 如果还没有找到就从sys.path给出的目录列表中依次寻找tbjx.py文件。

      特别注意的是:我们自定义的模块名不应该与系统内置模块重名。

  • 相关阅读:
    Java设计模式(十二) 策略模式
    Java设计模式(二) 工厂方法模式
    Java设计模式(一) 简单工厂模式不简单
    Kafka设计解析(四)- Kafka Consumer设计解析
    Kafka设计解析(三)- Kafka High Availability (下)
    Kafka设计解析(二)- Kafka High Availability (上)
    Spark 灰度发布在十万级节点上的成功实践 CI CD
    Spark SQL / Catalyst 内部原理 与 RBO
    Java进阶(七)正确理解Thread Local的原理与适用场景
    Kafka设计解析(八)- Exactly Once语义与事务机制原理
  • 原文地址:https://www.cnblogs.com/youhongliang/p/12231612.html
Copyright © 2011-2022 走看看