模块 导入方式 软件开发目录规范

Posted zrh-960906

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块 导入方式 软件开发目录规范相关的知识,希望对你有一定的参考价值。

1.模块

模块是一系列功能的结构体

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

模块的四种表现形式:
用python编写的py文件
已被编译为共享库或DLL的C或C++扩展(了解)
将一系列模块组织到一起的文件夹
使用C编写并连接到python解释器的内置模块

模块极大的提高了开发效率(内置,第三方),当程序比较庞大时,一个项目的程序拆分多个py文件,将公共用到的方法写到一个py文件,其他文件以模块的形式调用

知道哪个是执行文件,哪个是导入文件.

 

import导入模块

在运行执行文件时,会创建一个执行文件的名称空间

首次导入模块

1.执行导入文件

2.运行导入文件中代码,将产生的变量名和变量值放入导入文件的名称空间

3.在执行文件中产生一个指向名称空间的名字.

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

函数名加括号在哪都可以调用函数,函数在定义阶段,名字查找就已经固定了,不会因为调用位置的变化而改变.

import os time md

当几个模块有相同部分或者都使用一个模块,可以如上操作

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

import os   import time   import md

通常导入模块会写在文件开头

当文件名比较复杂时,可以给模块名取值

异常有两类:

1.语法结构错误,需要修改,异常捕获无法完成

2.逻辑错误:异常捕获可以处理

d = (i for i in range(3))
while True:
    try:
        print(d.__next__())
        print(name)
    except Exception:
        break
name = "jason"

from   import   导入模块

先创建执行文件中的名称空间

首次导入模块

1.运行导入模块

2.将产生的名字放到导入模块的名称空间

3.直接拿到指向导入模块的名称空间中的某个值的名字

缺点:

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

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

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

 

循环导入问题及解决思路

如果出现循环导入问题,说明程序设计的不合理,循环导入问题应该在程序设计阶段应该避免

解决循环导入问题的方式
1.方式1
将循环导入的句式写在文件最下方()
2.方式2
函数内导入模块

__name__用法
def index1():
    print(index1)
def index2():
    print(index2)
if __name__ == __main__:  # 快捷写法,main直接tab键
    index1()
    index2()
#当文件被当作执行文件执行时,__name__,打印结果是__main__
#当文件被当作模块导入时,__name__,打印结果是模块名(没有后缀)
模块的查找顺序
    1.先从内存中找
    2.内置中找
    3.sys.path中找(环境变量):
        一定要分清楚谁是执行文件谁是被导入文件
        是一个大列表,里面放了一堆文件路径,第一个路径永远是执行文件所在的文件夹
绝对导入
绝对导入必须依据执行文件所在的文件夹路径为准
    1.绝对导入无论在执行文件中还是被导入文件都适用
相对导入
    .代表的当前路径
    ..代表的上一级路径
    ...代表的是上上一级路径
注意相对导入不能再执行文件中使用
    相对导入只能在被导入的模块中使用,使用相对导入 就不需要考虑
    执行文件到底是谁 只需要知道模块与模块之间路径关系
项目名
bin文件夹
        start.py项目启动文件
conf文件夹
        seetings.py项目配置文件
core文件夹
        src.py项目核心逻辑文件  
db文件夹
        数据相关
lib文件夹
        common.py项目所用到的公共资源
log文件夹
        log.log项目的日志文件
readme文件夹   文本文件  介绍项目     
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()

 

 

 

 

以上是关于模块 导入方式 软件开发目录规范的主要内容,如果未能解决你的问题,请参考以下文章

python模块基础-软件开发目录规范-01

python 软件目录结构规范 与 模块导入

模块循环导入问题,区分py文件的两种用途,模块的搜索路径与查找优先级,软件开发的目录规范

软件开发的目录规范/定制程序的入口/引用配置文件/引用自定义模块/logging模块/日志继承与propagate属性/通过字典导入配置/日志模块在项目中的使用

第二模块第22章 软件开发的目录规范

1.模块2.循环导入问题及解决思路3.区分py文件的两种类型4.模块的查找顺序5.模块的绝对导入与相对导入6.项目开发的目录规范