• python模块和软件开发目录规范


    一、模块介绍

    什么是模块?

      模块:就是一系列功能能的结合体

        模块的三种来源:

          1、内置;2、第三方;3、自定义。

        模块四种表现形式:

          1、使用python编写的py文件(意味着py文件也可以称之模块)

          2、已被编译为共享库或DLL的C或C++扩展(作为了解即可)

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

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

    为什么要用模块?

       1、别人写好的模块(内置,第三方),拿来直接可以用,省事。

       2、使用自己写的模块:放程序比较庞大的时候,自己的项目不可能只在一个py文件中,那么当有多个文件都需要使用相同的方法的时候,

         可以将该公共的方法写到一个py文件中,其他文件以模块的形式到过去直接调用即可。

    如何使用模块?

       直接调用,方法》》》import /from...import...

       注意一定要区分那个是执行文件,那个是被导入文件

    二、导入模块:

      import

      1、运行run.py文件首先会创建一个run.py的名称空间

        首次导入模块 例:md.py文件

          1、执行md.py文件

          2、运行md.py文件中的代码将产生的名字与值存放到md.py名称空间中

          3、在执行文件中产生一个指向名称空间的名字(md)

        多次导入不会再执行模块文件,会沿用第一次导入的结果

     2、使用import导入模块,访问模块名称空间中的名字统一句式:模块名,名字

        用法特点:

        1、指名道姓的访问模块中的名字,永远不会与执行文件中的名字冲突。

        2、如果想访问模块中名字,必须用模块名 . 名字的方式

        ps:只要当几个模块有相同部分或属于用一个模块,可以使用上面的方法

         当几个模块没有联系的情况下,应该分多次导入

        例:import os

          import time

          import md

          通常导入模块的局势会卸载文件的开头;当模块名字比较复杂的情况下,可以给模块去别名

      from...import...

        1、和import运行前两步一样,第三步:直接拿到指向模块md1.py名称空间中某个值的名字

         用法缺点:

           1、访问模块中的名字不需要加模块名前缀

           2、在访问模块名字可能会与当前执行文件中的名字冲突

        2、补充:

          from ...import *   #  * 一次性将模块中的名字全部加载过来 

          __all__可以指定当所在py文件被当模块导入的时候,可以限制导入者能够拿到的名字个数

    三、循环导入

      循环导入出现,一定是程序设计的不合理,在设计阶段应该避免

      解决循环导入的问题的方式

        1、将循环导入的语句放在被导入语句下方

        2、导入模块语句放在函数体代码内

    四、__name__用法

      当文件被当做执行文件执行时,__name__打印的结果是__main__

      当文件被当做模块导入时,__name__打印的结果模块名(无后缀)

    def index1():
        print('index1')
    
    def index2():
        print('index2')
    
    if __name__ == '__main__':  # 快捷写法 main直接tab键即可
        index1()
        index2()

    五、模块查找顺序:

      1、先从内存中找

      2、次从内置中找

      3、sys.path中找(类似环境变量)

      ps:一定要分清楚谁是执行文件,谁是被导入文件

      一堆文件路径,第一个路径永远都是执行文件所在的文件夹

      注意py文件名不应该与模块名(内置的,第三方)冲突

    import sys
    sys.path.append(r'D:Python项目day14dir1')
    print(sys.path)  # 添加文件路径

    六、绝对导入和相对导入

       绝对导入必须依据执行文件所在的文件夹路径为准

        1.绝对导入无论在执行文件中还是被导入文件都适用

       相对导入只能用在模块文件中使用,无序考虑执行文件问题,只需要知道模块和模块之间路径关系

        .代表的当前路径

        ..代表的上一级路径

        ...代表的是上上一级路径

        from . import m2

        from ... import test   # 往上回3个路径

    七、软件开发目录规范

      1、bin  》》》start.py 启动文件   

      2、conf 》》》settings.py 配置文件

      3、core》》》src.py核心文件

      4、db 》》》数据库

      5、lib 》》》common.py 公共文件

      6、log》》》daily record.txt  日志

      7、readme.txt 》》》解释文件

      start.py启动文件也可放在文件跟目录下

        固定格式:

    import sys
    import os
    
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    sys.path.append(BASE_DIR)
    """
    pycharm会自动将你新建的最顶层的目录自动添加到环境变量中
    上面这两句话 不是针对你的 是针对下载你这个软件的用户
    """
    from core import src
    
    if __name__ == '__main__':
        src.run()
    

      

  • 相关阅读:
    思考题13-1.b
    算法导论 第三版 9.3-8
    算法导论第三版思考题8-4
    算法导论第三版思考题8-3.b
    算法导论第三版思考题8-3.a
    算法导论第三版思考题8-2.e
    算法导论 第三版 思考题 7-4
    test
    一个朋友面试时遇到的算法题(怎么组合后得到最大整数)
    监听器模式、观察者模式
  • 原文地址:https://www.cnblogs.com/xiaowangba9494/p/11196900.html
Copyright © 2020-2023  润新知