zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    自定义CSS样式,在Hover的基础上面改成
    如何获取上次访问的url地址
    霍英东:大佬的黄昏 刚看的一篇文章很有感触,摘录一点东西
    把用户当傻子的终将被用户鄙视,—|—
    WinForm支持拖拽效果
    【EntityFramework系列教程五,翻译】在ASP.NET MVC程序中借助EntityFramework读取相关数据
    关于“验证码的制作”的一些补充
    【EntityFramework系列教程六,翻译】在ASP.NET MVC程序中使用EntityFramework对相关数据进行更新
    【EntityFramework系列教程四,翻译】为ASP.NET MVC程序创建更为复杂的数据模型
    【EntityFramework系列教程三,翻译】在ASP.NET MVC程序中使用EntityFramework对数据进行排序、过滤筛选以及实现分页
  • 原文地址:https://www.cnblogs.com/renvip/p/11196211.html
Copyright © 2011-2022 走看看