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__ 可以进行区分何时执行。

猜你喜欢

转载自www.cnblogs.com/purewhite/p/10691688.html