zoukankan      html  css  js  c++  java
  • day20 模块引入的一些说明

    概念

      模块导入多次也是只导入一次,sys.modules 里面会查看有没有被导入。

      导入后的模块内部的函数,变量就都可以拿来用了。

      给模块起别名,可以提高代码的兼容性:

        ps:import  time  as  t

        但是被起别名的模块之前的名字无法再次被调用。

      

      为增加可读性,遵循原则:

        模块的引入最好不要一起引入,而且导入的时候最好在一开始的时候导入。

        导入模块的顺序:先导入内置的,再导入扩展的(比如Django),最后再导入自定义的。

        可导入整个模块,或者只导入模块的单个变量或者函数,导入的时候变量名完全不冲突的。

          import demo

          from demo import money,read

        用 * 的时候很危险会导致变量重名,在被调用的时候如果重命名会被覆盖的,重命名会冲突。

    所有的模块导入都应该尽量往上写:

    1. 内置模块
    2. 扩展模块
    3. 自定义模块

    模块不会被重复被导入:sys.modules

    从哪儿导入模块:sys.path

    import 模块名
        模块名.变量名  和本文件中的变量完全不冲突
    
    import 模块名 as 重命名的模块名:提高代码的兼容性
    
    import 模块1,模块2
    from 模块名 import 变量名
        直接使用 变量名 就可以完成操作
        如果本文件中有相同的变量名会发生冲突
    
    from 模块名 import 变量名 as 重命名变量名
    
    from 模块名 import 变量名1,变量名2
    
    from 模块名 import *
      将模块中的所有变量名都放到内存中
      如果本文件中有相同的变量名会发生冲突
    
    from 模块名 import * 和 __all__ 是一对
      如果没有这个变量,就会导入所有的名字
      如果有all,只导入all列表中的名字

    模块一导入就会执行,有时候会执行很多你不想他马上就执行的东西,就可以用 __name__ 来筛选出来。

    当我们直接执行这个模块本身的时候,__name__ =  '__main__'

    当我们执行其他模块,在其他模块中引用这个模块时,这个模块中的 __name__ =  '模块的名字'

    利用 if 判断是否等于 __main__ 可以进行区分何时执行。

  • 相关阅读:
    C++基础知识(二)
    C++基础知识(一)
    RT-thread 设备驱动组件之IIC总线设备
    RT-thread 设备驱动组件之SPI设备
    RT thread 设备驱动组件之USART设备
    RT-thread 设备驱动组件之PIN设备
    RT-thread finsh组件工作流程
    C语言知识点
    RT-thread main函数分析
    堆和栈的区别
  • 原文地址:https://www.cnblogs.com/purewhite/p/10691688.html
Copyright © 2011-2022 走看看