python中的程序结构与异常处理

程序结构

模块 Module

  1. 定义:包含一系列数据、函数、类的文件,通常以.py结尾。
  2. 作用:让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰,有利于多人合作开发。

导入

  • import
  1. 语法:
    import 模块名
    import 模块名 as 别名
    
  2. 作用:将某模块整体导入到当前模块中。
  3. 使用:模块名.成员
  • from import
  1. 语法:
    from 模块名 import 成员名[as 别名]
    
  2. 作用:将模块内的一个或多个成员导入到当前模块的作用域中。
  3. 使用:直接使用成员名
  • from import *
  1. 语法:
    from 模块名 import *
    
  2. 作用:将某模块的所有成员导入到当前模块。
  3. 模块中以下划线开头的属性,不会被导入,通常称这些成员为隐藏成员。

模块变量

__all__变量:定义可导出成员,仅对from xx import *语句有效。
__doc__变量:文档字符串。
__file__变量:模块对应的文件路径名。
__name__变量:模块自身名字,可以判断是否为主模块。

当此模块作为主模块(第一个运行的模块)运行时,__name__绑定’__main__’,不是主模块,而是被其它模块导入时,存储模块名。

加载过程

  • 在模块导入时,模块的所有语句会执行。
  • 如果一个模块已经导入,则再次导入时不会重新执行模块内的语句。

分类

  1. 内置模块(builtins),在解析器的内部可以直接使用。
  2. 标准库模块,安装Python时已安装且可直接使用sys,random。
  3. 第三方模块(通常为开源),需要自己安装。
  4. 用户自己编写的模块(可以作为其他人的第三方模块)。

包package

  1. 定义:将模块以文件夹的形式进行分组管理。
  2. 作用:让一些相关的模块组织在一起,使逻辑结构更加清晰。

导入

import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]

from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 成员名 [as 属性新名]

# 导入包内的所有子包和模块
from 包名 import *
from 包名.模块名 import *

init文件

  • __init__.py
  • 标记:是包内必须存在的文件。
  • 会在包加载时被自动调用。
  • __all__:记录from 包 import * 语句需要导入的模块。如果导入路径是一个包,那么需要在包的__init__.py模块中设置__all__属性

搜索顺序

内置模块 > sys.path 提供的路径

异常处理Error

异常

  1. 定义:运行时检测到的错误。
  2. 现象:当异常发生时,程序不会再向下执行,而转到函数的调用语句。
  3. 常见异常类型:
    – 名称异常(NameError):变量未定义。
    – 类型异常(TypeError):不同类型数据进行-运算。
    – 索引异常(IndexError):超出索引范围。
    – 属性异常(AttributeError):对象没有对应名称的属性。
    – 键异常(KeyError):没有对应名称的键。
    – 未实现异常(NotImplementedError):尚未实现的方法。
    – 异常基类Exception。

处理

  1. 语法:
    try:
    	可能触发异常的语句
    except 错误类型1 [as 变量1]:
    	处理语句1
    except 错误类型2 [as 变量2]:
    	处理语句2
    except Exception [as 变量3]:
    	不是以上错误类型的处理语句
    else:
    	未发生异常的语句
    finally:
    	无论是否发生异常的语句
    
  2. 作用:将程序由异常状态转为正常流程。
  3. 说明:
    • as 子句是用于绑定错误对象的变量,可以省略
    • except子句可以有一个或多个,用来捕获某种类型的错误。
    • else子句最多只能有一个。
    • finally子句最多只能有一个,如果没有except子句,必须存在。
    • 如果异常没有被捕获到,会向上层(调用处)继续传递,直到程序终止运行。

raise 语句

  1. 作用:主动抛出异常,快速传递错误信息。
  2. 目的:在程序调用层数较深时,向主调函数传递错误信息要层层return 比较麻烦,所以人为抛出异常,可以直接传递错误信息。。

自定义异常

  1. 定义:
    class 类名Error(Exception):
    
    	def __init__(self,参数):
    		super().__init__(参数)
    		self.数据 = 参数
    
  2. 调用:
    try:
    raise 自定义异常类名(参数)
    except 定义异常类 as 变量名:
    变量名.数据
    
  3. 作用:封装错误信息。
发布了23 篇原创文章 · 获赞 2 · 访问量 308
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览