模块及软件开发目录规范

目录:

模块

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

 

posted @ 2019-07-16 18:43  速8赛亚人  阅读(193)  评论(0编辑  收藏  举报