Python第十三课(模块1)

Python第十三课(模块1)    >>>转到思维导图>>>转到中二青年

1.什么是模块?

1模块就是一系列工能的结合体
2模块的三种来源:
    1.内置的(python解释器自带)
    2.第三方的(别人写的)
    3.自定义的(你自己写的)
3模块的四种表现形式
    1.使用python编写的py文件(也就意味着py文件也可以称之为模块:一个py文件也可以称之为一个模块)
    2.已被编译为共享库或DLL的C或C++扩展(了解)
    3.包好一组模块的包:把一系列模块组织到一起的文件夹(文件夹下有一个__init__.py文件,该文件夹称之为包) 包:一系列py文件的结合体
    4.使用C编写并链接到python解释器的内置模块

2.为什么要用模块

1.从文件级别组织程序,更方便管理。
当多个文件中都需要使用相同的方法的时候 可以将该公共的方法写到一个py文件中,其他的文件以模块的形式导过去直接调用即可
2.拿来主义,提升开发效率

3如何使用模块?

1.import的使用
    模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行
2.在第一次导入模块时会做三件事,重复导入会直接引用内存中已经加载好的结果
    1.首先创建一个执行文件(run.py)的名称空间,执行模块文件
在模块中定义的函数和方法若是使用到了global时访问的就是这个名称空间
    2.运行模块文件(md.py)中的代码将产生的名字与值存放到执行文件(run.py)的名称空间中
        在新创建的命名空间中执行模块中包含的代码
    3.在执行文件中产生一个执行指向名称空间的名字(md)
        创建名字来引用该命名空间
3from...import...句式缺点:
    1.访问模块中的名字不需要加模块名前缀
    2.在访问模块中的名字可能会与当前执行文件中的名字冲突
4补充知识点:
    __name__
        当文件被当做执行文件执行的时候__name__打印的结果是__main__
        当文件被当做模块导入的时候__name__打印的结果是模块名(没有后缀)
    __all__
        __all__可以指定当所在py文件被当做模块导入的时候,可以限制导入者能够拿到的名字个数
    from md1 import *
        一次性将md1模块中的名字全部加载过来 不推荐使用 并且你根本不知道到底有哪些名字可以用
    异常有两大类
        1.语法结构错误:需要你当场修改 异常捕获没法完成
        2.逻辑错误:异常捕获可以处理

4.循环导入

1.如果出现循环导入问题 那么一定是你的程序设计的不合理。循环导入问题应该在程序设计阶段就应该避免。
2.解决循环导入问题的方式
    1.方式1:将循环导入的句式写在文件最下方()
    2.方式2:函数内导入模块

5.模块的查找顺序

1.先从内存中找
2.再从内置中找
3.最后环境变量(sys.path)中找
    一定要分清楚谁是执行文件谁是被导入文件sys.path返回的是一个大列表,里面放了一对文件路径,第一个路径永远是执行文件所在的文件夹注意:py文件名不应该与模块名(内置的,第三方)冲突

6.绝对导入与相对导入

1绝对导入
    绝对导入必须依据执行文件所在的文件夹路径为准
    绝对导入无论在执行文件中还是被导入文件都适用
2相对导入
    .代表的当前路径
    ..代表的上一级路径
    ...代表的是上上一级路径
    注意相对导入不能再执行文件中使用
    相对导入只能在被导入的模块中使用,使用相对导入就不需要考虑执行文件到底是谁,只需要知道模块与模块之间路径关系

7.软件开发规范

项目名
    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)
"""
pycharm会自动将你新建的最顶层的目录自动添加到环境变量中
上面这两句话 不是针对你的 是针对下载你这个软件的用户
"""
from core import src
 
if __name__ == '__main__':
    src.run()
 
# 1.将core文件路径添加到system path中   ...太low
# 2.将ATM文件夹添加到system path中

END

原文地址:https://www.cnblogs.com/renvip/p/11196211.html