模块

一、模块简介

    什么是模块:

      模块就是一系列功能的结合体,例如.py文件

    模块有什么用:

      可以提高开发效率

    模块的来源:

      1. python解释自带的内置模块

      2.别人已经写好的第三方模块

      3.自定义的模块

    模块的表现形式:

      1.使用python编写的代码(.py文件)

      2.已被编译为共享库或DLL的C或C++扩展

      3.包好一组模块的包(文件夹)  # 包其实就是多个py文件(模块)的集合  包里面通常会含有一个__init__.py文件

      4.使用C编写并链接到python解释器的内置模块

二、import句式

    在调用模块时可以采用一个特定的句式 imoprt 模块名 来调用该模块

 

 

     导入模块时会发生的事情:

      1.产生一个导入文件的全局名称空间

      2.运行模块中的代码

      3.产生一个模块的全局名称空间

      4.使导入文件中的模块名指向模块的全局名称空间

      ps:多次导入相同的模块只会执行一次

    通过模块名.的方式可以调用模块中的所有的名字,并且名字不会冲突

 

三、from...import...句式

    在调用模块时也使用from模块名import模块中的某个名字来导入

 

 

     

     导入模块时发生的事情:

      1.产生导入模块的文件的全局名称空间

      2.执行模块中的文件

      3.产生模块的全局名称空间

      4.使导入的模块中的名字指向模块的全局名称空间

      优点:

        可以直接使用该模块中的名字使用

      缺点:

        如果导入模块的文件有和该模块中相同的名字,会发生冲突,会指向当前的名称空间。

 

四、导入模块拓展用法

    1.起别名

      可以在使用导入句式时在后面加个as和别名

      import 模块名 as 别名

      from 模块名 import 模块中的名字 as 别名

      之后在导入模块的文件中便可以直接使用别名来使用该模块了

from m1 import name as f
print(f)

import m2 as f1
print(f1.name)

 

 

 

    2.连续导入

      import句式 (导入多个模块)

        方法1:import 模块名1,模块名2,模块名3...

        方法2:import 模块名1

             import 模块名2

             import 模块名3

        

      from...import...句式 (导入一个模块中的多个名字)

        方法1:from 模块名 import 模块中的名字1,模块中名字2,模块中的名字3...

            ...   

    3.通用导入

       from 模块名 import*(*号代表导入了模块中的所有名字)

       使用__all__ = ['模块中的名字1',‘模块中的名字2’], 可以用来指定被*号导入的名字

五、判断文件类型

    利用__name__来判断文件的类型,如果是执行文件,输出__name__会返回__main__,如果是被当作模块导入,则会返回模块名

 

 

   如果想在被导入时不执行,可以将代码写在如下图所示

if __name__ == '__main__':
    #将不想被导入执行的代码写在下面

  

六、循环导入的解决方法

    1.调换顺序

      导入语句放在最后,确认在导入前所有的名字已经加载过

    2.利用函数

      将导入的语句放入函数,在所有的名字都加载后在调用函数

七、模块导入的顺序

   导入顺序:

      1.先从内存中寻找

      2.内置模块中寻找

      3.最后去sys.path系统路径中寻找(自定义模块)# 结果中第一个元素永远是当前执行文件所在的路径

        都没有找到就会报错

      ps:如果自定义模块和内置模块名字相同,则会执行内置模块不会执行自定义模块

    当某个自定义模块查找不到时的解决方案:

      方式1:

          import sys
          sys.path.append('自定义模块路径')

      方式2:

          from 文件夹名称,文件夹名称 import 模块名

          from 文件夹名称,模块名 import 模块中的名字

 

 

          

八、绝对导入与相对导入

      在导入多个文件的模块时,一律按照执行文件所在路径为准

    绝对导入:

      始终按照执行文件所在的sys.path查找模块

    相对导入:    

       使用句点符(.),一个句点符就是在当前路径,两个句点符就是上一层路径,一般情况下有两个句点符就已经够了。

       可以打破一律按照执行文件所在的路径为准的规则,只考虑两个文件之间的位置

      缺点:相对导入只能用在模块文件中,不能用在执行文件中,会出现报错

 

九、软件开发目录规范

bin文件夹(存放启动文件)
	start.py  #当启动文件只有一个时可以直接将文件放在外面
conf文件夹(存放配置文件)
	settings.py
lib文件夹(存放公共的功能)
	common.py
core文件夹(存放核心代码文件)
	src.py
db文件夹(存放数据)
	userinfo.txt
log文件夹(存放程序运行日志)
	log.txt
readme.txt(产品说明)
requirements.txt(存放第三方模块)
    

 

posted @ 2021-11-23 16:46  椰子皮0oo0  阅读(502)  评论(0)    收藏  举报
1