• 异常,模块和包


    1 异常处理

      1) 错误

        一般来说, 错误分为两种

        一种是语法错误, 这一类是不符合程序语言规范

        另一种是逻辑错误, 是在程序设计过程中忽略忽视或者错误逻辑导致的

      2) 常见的异常

      AttributeError 访问的对象没有该属性

      IOError 输入/输出异常

      ImportError 无法引入模块或包, 基本上是路径问题或名称错误

      IndentationError 语法错误一种, 代码没有正确对齐

      IndexError 下标越界

      KeyError 键不存在

      KeyboardInterrupt 在控制台中Ctrl+C中断

      NameError 名字错误

      SyntaxError 语法错误

      TypeError 类型不正确

      UnboundLocalError 试图访问一个还未被设置的局部变量

      ValueError 类型正确但是值不对

      3) 具体异常处理

        具体异常处理参见

    2 模块

      一个py文件就是一个模块

      导入模块产生的三件事情

        1) 创建一个以模块名称命名的名称空间, 并把模块中的内容放入该名称空间之中

        2) 执行一次该模块文件

        3) 这个名字会被作为变量, 在执行导入的这个文件中被使用

      寻找模块的关键因素

        1) 导入模块的时候, 会在sys.path的环境变量中, 自动添加上当前文件路径

        2) 导入的处理基点尤其是路径上, 始终是执行这个导入所在文件的路径

      寻找模块的顺序

        内存中加载完毕的模块 > 内置模块 > sys.path中包含的路径的模块

      import导入的用法

        1) 直接导入模块, 使用的时候用模块名来取得名称空间的内容

        2) import 模块名称 as 新名字, 这样可以给原模块名一个新名字

        3) import 模块, 模块2, 模块3... 多个导入

      from.. import的用法

      这个导入有两个特点

        1) 实际导入的是import后面的内容, 且不能使用 . 的形式

        2) from后面跟随的是层级关系, 可以说from.. import是带有一定的层级关系来得到导入的包的

      多个导入和命名

        在import后面同样使用逗号分隔

        命名同样可以使用as

      全部导入

      from .. import *

        会导入公开的变量内容, 下划线开头的私有变量不会被导入

        可以设定 __all__ = [变量列表] 来限定导入的内容 

      特殊变量__name__

        在执行本文件的时候 __name__ = '__main__'

        在被导入之后 __name__ = 模块的名字

      导入的时候, Python会生成一个 __pycache__ 目录, 这个目录是缓存, 用于加快导入的

        但是执行文件的时候是不会产生这个目录的

    3 包

      包就是一个文件夹, 该文件夹里有一个文件是 __init__.py 文件

      包的导入遵循导入原则

      绝对导入和相对导入

        1) 绝对导入

        以顶点的包为起点, 逐层获取导入内容

        2) 相对导入

        . 表示当前文件所在的路径

        .. 表示当前文件所在的路径的上一层路径

      相对导入只能使用from .. import 的方式

    人若有恒 无所不成
  • 相关阅读:
    如何用StatSVN统计SVN服务器某项目的代码量
    探秘JVM的底层奥秘
    SpingMVC流程图
    NioCopy文件
    我的angularjs源码学习之旅3——脏检测与数据双向绑定
    我的angularjs源码学习之旅2——依赖注入
    我的angularjs源码学习之旅1——初识angularjs
    IE兼容性问题汇总【持续更新中】
    nodejs学习笔记四——express-session
    我理解的this
  • 原文地址:https://www.cnblogs.com/weihuchao/p/6799229.html
Copyright © 2020-2023  润新知