zoukankan      html  css  js  c++  java
  • 模块及软件开发目录规范

    目录:

    模块

    import

    from ... import ...

    循环导入/相对导入/绝对导入

    软件开发目录规范

    1.模块

    概念:一系列功能的结合体

    来源:1.内置的(python解释器自带的)

       2.第三方(别人写的)

       3.自定义的(自己写的)

    表现形式:1.使用python编写的py文件(也就意味着py文件也可以称之为模块:一个py文件也可以称之为一个模块)

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

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

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

    模块使用:1.提高开发效率(用别人写好的)

          2.将公共模块写到一个py文件中,可以随时调用(自己写的)

          3.在模块使用过程中,一定要区分执行文件和导入文件

    2.import

    '''

    import md  # 在一个py文件中导入一个模块

    右键运行py文件 >>> 创建一个此文件的名称空间 >>> 导入模块 >>> 执行模块内的文件 >>>  运行模块文件内的代码 >> > 创建一个包括有模块内所有变量的md.py名称空间 >>> 执行文件中产生一个指向名称空间的名字(md)

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

    '''

    使用import导入模块,访问模块名称空间中的名字标准:   模块名.名字

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

    import os,time,md
    # 不推荐使用一次性导入多个模块
    # 推荐使用分次导入,如下:
    import os
    import time
    import md
    
    
    # 只有当几个模块有相同部分或者同属于一个模块,可以一次性导入多个
    
    # 通常导入模块的语句写在文件的开头
    
    # 当模块名字比较复杂,可以给模块取别名,如:
    import mddddddddddd as md

    3.from ... import ...

    可以指定文件导入模块,但是具有个缺点:访问模块中的名字不需要加模块名前缀  >>>   导致模块中的名字会与执行文件中的名字冲突

    '''

    补充:

    from md import *      # 一次性将md模块中的名字全部加载过来 (不推荐使用,因为不知道到底哪些名字可以用;名字过多的话导致内存溢出)

    __all__      # 可以指定所在文件被当作模块导入的时候,限制导入时被导入名字的个数。如  __all__ = ['money','read']     表明在被导入时,只能取money和read两个名字

    '''

    4.循环导入/相对导入/绝对导入

    循环导入:

      是不可取的方法,如出现循环导入,那么一定是程序设计不合理,在设计阶段应该避免

    解决循环导入的方法:

    1.将循环导入的句式写在文件最下方

    2.函数内导入模块

    绝对导入:

      依据执行文件所在的文件夹路径为准

      (在执行文件和导入文件中都适用)

    相对导入:

      .代表当前路径   # 一个点

      ..代表上一级路径   # 两个点

      ...代表上上一级路径   # 三个点

      (只能在导入的模块文件中使用;只需要知道模块与模块之间路径关系 )

    模块的查找顺序:首先从内存中找 >>> 然后在内置中找 >>> 最后在sys.path中找(环境变量)

    注:大列表里面放有一堆文件路径,第一个路径永远是执行文件所在的文件夹

      py文件名不应该与模块名冲突,包括内置的和第三方的

    '''
    __name__:
      当文件被当作执行文件执行的时候,   __name__  打印的结果是  __main__
      当文件被当作模块导入的时候,  __name__  打印的结果是模块名(没有后缀)
      因此可以设立一个条件:
        if __name__ == '__main__': # 快捷写法:  main直接tab键即可
          执行下面的代码
    '''

    软件开发目录规范

    文件名:
        bin文件  # 存放程序的启动文件
            | _ _ _ _子文件一般有start.py或者run.py文件
            |
        conf文件  # 存放配置相关的文件
            | _ _ _ _子文件一般有settings.py文件
            |
        core文件  # 存放业务核心逻辑代码
            | _ _ _ _子文件一般有src.py文件
            |
        db文件  # 存储数据的文件
            | _ _ _ _子文件一般有db.txt文件
            |
        lib文件  # 存放一些公共的、共享的文件
            | _ _ _ _子文件一般有commen.py文件
            |
        log文件  # 存放一些日志,如浏览记录等
            | _ _ _ _子文件一般有log.log文件
            |
        Readme文本文档  # 项目说明文件

    **********************************

    启动文件bin固定代码:

    import sys

    import os

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

    sys.path.append(BASE_DIR)

    from core import src

    if __name__ == '__main__':

      src.run()

    *************************************

    PS:pycharm会自动将你新建的最顶层的目录自动添加到环境变量中!!!

  • 相关阅读:
    Shell 脚本中调用另一个 Shell 脚本的三种方式
    Shell脚本的三种执行方式
    python selenium中Excel数据维护(二)
    python里面的xlrd模块详解(一)
    selenium处理iframe定位于切换问题解决办法
    Selenium在定位的class含有空格的复合类的解决办法整理
    SqlSugar ORM已经支持读写分离
    ASP.NET Core的Kestrel服务器
    服务是如何加载并运行的, Kestrel、配置与环境
    ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解
  • 原文地址:https://www.cnblogs.com/pupy/p/11195824.html
Copyright © 2011-2022 走看看