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会自动将你新建的最顶层的目录自动添加到环境变量中!!!

  • 相关阅读:
    Docker中查看Mysql数据库中的各环境参数
    Hbase shell 输入无法使用退格键删除解决办法
    HBase启动时报错:/bin/java: No such file or directory6/bin/../bin/hbase: line 412: /usr/local/jdk1.8.0_152/bin/java
    SSH无密码验证
    详解分布式应用程序协调服务Zookeeper
    zookeeper的原理及使用
    Hadoop、Yarn和vcpu资源的配置
    一文让您全面了解清楚HBase数据库的所有知识点,值得收藏!
    基于Docker一键部署大规模Hadoop集群及设计思路
    PHP ServerPush (推送) 技术的探讨【转】
  • 原文地址:https://www.cnblogs.com/pupy/p/11195824.html
Copyright © 2011-2022 走看看