模块

模块:

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

模块的三种来源:

1、内置的(Python解释器自带的)

2、第三方的(别人写的)

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

模块的四种表现形式

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

2、已被编写为共享库或DLL的C或者C++扩展

3、把一系列模块组织到一起的文件夹(文件下有一个init.py文件,该文件夹称之为包) 4、使用c语言编写并连接到python解释器的内置模块

为什么要用模块

1、可以用别人写好的模块(第三方的,内置的),极大的提高了开发效率

2、可以使用自己写的模块()当项目比较庞大的时候,你的项目不可能只放在一个py文件中,当多个文件中都需要使用相同的方法时,可以将该公共的方法写到一个py文件中,其他文件可以以模块的形式导过去直接调用。

如何使用模块

一定要区分哪个是执行文件,哪个是被导入文件

·import导入模块

使用import导入模块 访问模块名称空间的名字统一句式

                                           模块名.名字

特点:

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

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

首次导入模块,执行时三个步骤

右键运行执行文件,首先会创建一个执行文件的名称空间

执行被导入文件

运行被导入文件中的代码 将产生的名字与值放在被导入文件的名称空间中

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

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

from...import...导入模块

from...import...句式的缺点

访问模块中的名字不需要加模块名前缀 在访问模块中的名字可能会与当前执行文件中的名字

循环导入问题和解决思路

异常原因

Python中模块被导入一次之后,就不会重新导入,只会在第一次导入时执行模块内代码

我们应该尽量避免出现循环导入,如果出现多个模块都需要共享的数据,可以将

共享的数据集中放在某一个地方。

 

name用法

当文件被当做执行文件执行的时候name打印的结果是main

当文件被当做模块导入的时候,name打印的结果是模块名

if__name__=='main' 的快捷写法 main直接tab键即可

模块的查找顺序

1、先从内存中找 2、内置中找 3、sys.path中找(环境变量)

模块的绝对导入和相对导入

绝对导入

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

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

相对导入

. 代表的当前路径

.. 代表着上一级路径

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

相对导入只能在被导入模块中使用,不能再执行文件中使用。

软件开发目录规范

项目名

bin文件夹

start.py项目启动文件

conf文件

settings.py项目配置文件

core文件夹

src.py项目核心逻辑文件

db文件夹 数据相关

lib文件夹 common.py项目所用到的公共的功能

log文件夹 log.log项目的日志文件

readme文本文件 介绍项目

 

start.py文件代码

import sys
import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)
原文地址:https://www.cnblogs.com/panyi2019/p/11197013.html