模块

一. 模块

  指一系列功能的集合体(模块名用小写和下划线组成)

  模块的四个通用类别:1.使用python编写的.py 文件

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

            3. 把一系列模块组织到一起的文件夹

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

  模块的三个来源: 内置模块  , 第三方模块,   自定义模块

  使用模块的原因: 使用内置模块和第三方模块极大地提高了开发效率

          使用自定义模块将程序各部分组件共用的功能提取放在一个模块中,其他组件可以调用该模块,减少代码冗余

  导入模块: import + 模块名(首次导入模块会发生三件事)

       1. 会产生一个模块的名称空间

       2. 执行导入模块文件的内容,将产生的名字放到模块的名称空间里

       3. 在当前执行文件中拿到名字例如read1, 该名字指向模块名称空间中的read1

  ( import + 模块名 )    vs  (  from 模块名 import 功能名 )

  import  优点:  引用模块中的名字必须加前缀,这样不会与当前名称空间冲突

      缺点: 引用必须加前缀,不够简洁

  from...import...:  优点  是引用不用加前缀,书写简洁

          缺点:容易与当前执行文件名称空间名字冲突

  在被调用文件spam中定义  __all__ :[' 函数1', '函数2']  当用到 from spam import *  时只引用列表中的内容

  当被调用文件中的可变类型改变时,内存地址不变,因此引用时该可变类型也跟着变

  当被调用文件中的不可变类型改变时,内存地址发生了改变,因此引用时该不可变类型不变

  模块的搜索路径: 1. 内存     2.内置模块      3. sys.path (环境变量,全局有效)

           优先级: 内存  >  内置  >  sys.path

           被导入模块参照的也是执行文件为准的sys.path

  区分path文件的两种用途:

    1. 当文件被当做执行文件时 __name__值为__main__

    2. 当文件被当做模块导入时 __name__值为模块名

  文件开发的目录规范: bin ( 启动文件)===》 start.py

             conf(配置文件)===》 settings.py

             lib(自定义模块)===》 common.py

             core(核心文件)====》 src.py

             db( 数据文件)

             log(日志)

             readme(介绍软件)

  import sys:  1. 可以把项目根目录加到环境变量(sys.path.append(r' 路径 '))

         2.把项目根目录所在的绝对路径拿到,加到环境变量

        os.path.abspath(__file__)  获得当前执行文件的绝对路径

        os.path.dirname( )  获取到执行文件所在的文件夹

        获得ATM文件夹 之前的 目录(  src.py==> core 文件夹 ===》 ATM文件夹)

         BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

       日志模块要打开文件,将内容写入文件,打开文件的路径应在settings中设定

          log_path=r' %slog ranscation.log' % BASE_DIR

  总结:启动文件直接放在ATM文件下面,bin删除

       将ATM文件放在顶级文件中

  

  

原文地址:https://www.cnblogs.com/Afrafre/p/10062592.html