zoukankan      html  css  js  c++  java
  • 模块

    一、什么是模块?(what)

      自己无法实现需要用别人写好的功能。(可能是文件夹/py文件/C语言编译好的一些文件)

    二、模块的好处。(why)

      1.可以进行分类管理。具有相同类型的写在一个模块中。比如所有有关时间的模块写在一个模块中。

      2.可以节约内存。模块在未调用之前都存在硬盘上。

      3.提供跟多的功能。

    三、模块的分类。

      1.内置模块

        安装python解释器的时候自带的方法。

      2.第三方模块/扩展模块

        在安装python时没有带的一些功能,比如diango 模块。

      3.自定义模块

        自己写的一个功能,就可以看做一个模块。

    四、模块如何使用?(how)

      第一种    import  

        1、通过 import + 模块名导入模块

        2、模块的命名规则和变量命名规则相同。且首字母小写。

           3、import  + 模块名 相当于执行了这个模块所在的py文件。

          4、一个模块不能被重复导入。(重置除外)

        5、多个模块可以在一行被同时导入。(eg: import a, b, c...)但根据PEP8规范,一行倒入一个模块。

          模块导入的顺序是:内置模块>>>第三方模块>>>自定义模块

        6、模块的重命名。 

          import  my_module as bbb

          就相当于将这个模块重命名为bbb , 但是并没有修改这个py文件的名字,只是在本文件中调用该模块的时候,可以用bbb代替。

        7、工作原理

          

        第二种  from ···import···

            1、from ···import···  相当于执行了整个模块的py文件。

            2、from + 模块 + import +导入内容

               导入什么用什么,没有导入的就不能用。但不代表不存在,只是没有在该文件中建立到模块中其他变量或方法的引用。

            3、当导入的模块中的变量或者方法 和 文件中的变量或方法重名时,那么这个名字只代表最后一次对他赋值的变量或方法名。(要不在文件中出现和模块重名的情况 )

            4、文件中对全局变量的模块中的变量的是完全不会影响到。

            5、重命名和 import 一样。

            6、from 模块 import * 是将模块中的所有变量导入文件。和 import不同的是 调用形式。

          

          7、__all__可以控制*导入文件的内容。

          当在模块中写入__all__ = [变量名],此时进行 from 模块 import * 的时候,就只会导入写在__all__ 的列表中。没有写入的变量将不会被导入。

    五、把模块当脚本运行。

          脚本运行:

              __name__ = __main__   就是脚本运行。

          模块运行:

              __name__ = '模块名'

          if __name__ = __main__ :  如果希望被当做模块导入的时候有些代码不想被执行,就可以写在 if __name__ = __main__下边。

          是一个条件判断,如果是在本文件中执行的,才会输出这个条件语句下边的内容。

    六、模块的搜索路径。

          1、模块的搜索路径完全存储在sys.path里表中。

          

    import sys
    print(sys.path)

          2、导入模块的顺序是从前往后,找到一个符合条件的就停止寻找。

          3、如果要导入的模块和当前执行文件在同一级,可以直接导入。

          如果要导入的模块和当前执行文件不在同一级,需要将模块的绝对路径添加到sys.path 列表中。

          4、模块能否被导入就看这个模块的绝对路径在不在这个sys.path列表中,如果没有需要将模块的绝对路径添加到sys.path列表中。否则

            import 模块名  就会报错:  ModuleNotFoundError : No module named '模块名'
    
    

    七、模块的重新加载。

          importlib.reload(变量名)  对   导入的模块重新加载,如果期间有变量发生变化,重新加载后会被修改。(极不推荐使用)。

    八、包

          1、从包中导入模块,要看这个包所在的目录是否在sys.path列表中。

          2、直接导入一个包相当于执行了这个包中的__inin__文件,并不会把这个包下的其他包或者py文件导入内存。

             如果要导入一个包就想执行包里边的所有内容,需要在__init__文件中进行操作。(添加绝对路径或者相对路径)

            

     

            

  • 相关阅读:
    React(七)独立组件间的共享Mixins
    React(六)Props属性
    React(五)State属性
    React(四)组件生命周期
    React(三)JSX内置表达式
    Python(一)缺点
    Vue(二十六)父子组件通信
    React(二)组件
    React(一)使用脚手架创建React项目
    Vue(二十五)打包后路径报错问题
  • 原文地址:https://www.cnblogs.com/wf123/p/9415147.html
Copyright © 2011-2022 走看看