异常,模块和包

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 的方式

人若有恒 无所不成
原文地址:https://www.cnblogs.com/weihuchao/p/6799229.html