学习笔记 异常

包(模块包) package
包是将模块以文件夹的组织形式进行分组管理的方法
  作用:
    1. 将一系列模块进行分类管理,有利于防止命名冲突
    2. 可以在需要时加载一个或部分模块而不是全部模块
  包示例:
    mypack/
        __init__.py
        menu.py
        games/
            __init__.py
            contra.py      # 魂斗罗
            supermario.py  # 超级玛丽
            tanks.py       # 坦克大战
        office/
            __init__.py
            excel.py
            word.py
            powerpoint.py
包的导入语法:
    import 包名 [as 包别名]
    import 包名.模块名 [as 模块新名]
    import 包名.子包名.模块名 [as 模块新名]

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

    from 包名 import *
    from 包名.模块名 import *

__init__.py 文件
  是常规包内必须存在的文件,__init__.py会在导入包时被自动调用
  作用:
    1. 编写此包的内容
    2. 在内部添加包的文档字符串
    3. 在__init__.py 文件内可以加载此包所依懒的其它模块

示例见:
  code/mypack/__init__.py

包的__all__列表
  作用:
    用来记录此包中有哪儿些子包或模块需要导入
    当用from 包 import * 语句导入时,只查 找__all__中的模块或子包
  说明:
    __all__列表只在from xxx import *语句时起作用

说明:
  当子包或子包内的模块被导入时,上一层的包也会被先导入
  例如:
  import mypack.games.contra
    # 实质会先导入mypack,再导入games,再导入contra

包的相对导入:
  包的相对导入是指包内的模块的相互导入

语法:
  from 相对路径包或模块 import 属性或模块名
  或
  from 相对路径包或模块 import *

相对路径:
  在 from xxxx import 语句中,xxxx 部分可以使用相对路径
  . 代表当前目录
  .. 代表上一级目录
  ... 代表上二级目录
  .... 以此类推
  注:
    1. 相对导入时不能超出包的外部
    2. 相的导入要避免循环导入


异常(基础)  exception
什么是错误
  错误是指由于逻辑或语法等导致一个程序无法正常执行的问题

错误的特点:
  有些错误无法预知

什么是异常
  异常是程序出错时标识的一种状态
  当异常发生时,程序不会再向下执行,而转去调用此函数的地方待处理此错误并恢复为正常状态

异常的作用:
  通知上层调用者有错误产生需要处理
  用作信号

try语句的两种语法:
  try-except 语句
  try-finally 语句

try-except语句的语法
  try:
      可能触发异常的语句
  except 错误类型1 [as 变量1]:
      异常处理语句1
  except 错误类型2 [as 变量2]:
      异常处理语句2
  except (错误类型3, 错误类型4,...):
      异常处理语句3
  ...
  except:
      异常处理语句other
  else:
      末发生异常的语句
  finally:
      最终语句
作用:
  偿试捕获异常,将程序转为正常状态并继续执行

示例见:
  try_except1.py
  try_except2.py
  try_except3.py
  try_except4.py
  try_except_else.py
  try_except_else_finally.py

练习:
  写一个函数 get_score() 来获取用户输入的学生成绩(0~100的整数),如果输入出现错误,则此函数返回0,如果用户输入的数是0~100之间的数,返回这个数

  def get_score():
      ...

  score = get_score()
  print('学生的成绩是:', score)

try-except语句语法说明:
  1. as 子句是用于绑定错误对象的变量,可以省略
  2. except 子句可以有一个或多个,但至少要有一个
  3. else子句最多只能有一个,也可以省略
  4. finally子句最多只能有一个,也可以省略



try-finally 语句
语法:
  try:
      可能触发异常的语句
  finally:
      最终语句

语法说明:
  finally 子句不可以省略
  一定不存在except 子句

作用:
  通常用try-finally 语句来做触发异常时必须要处理的事件,无论异常是否发生,finally 子句都会被执行
  注:
    try-finally 语句不会改变程序的(正常/异常)状态


raise 语句:
  作用:
    触发一个错误,让程序进入异常状态
  语法:
    raise 异常类型
    或
    raise 异常对象

示例见:
raise.py
raise2.py

assert 语句(断言语句)
  语法
    assert 真值表达式, 错误数据(通常是字符串)
  作用:
    当真值表达式为False时,用错误数据创建一个AssertionError类型的错误,并进入异常状态
  等同于:
    if 真值表达式 == False:
        raise AssertionError(错误数据)

示例见:
  assert.py

为什么要用异常处理机制:
  在程序调用层数较深时,向主调函数传递错误信息需要层层的 return 返回比较麻烦,所以用异常处理机制

示例:
  以下代码见:
    except1.py
    except2.py

def f1():
    print("开始盖房子打地基...")
    print("地基完工")

def f2():
    print("开始盖房子地面以上部分")
    print("房子完工")

def f3():
    """第二承包商打人干活"""
    f1()
    f2()

def build_house():
    f3()

build_house()


练习:
  1. 一个球从100米高度落下,每次落地后反弹高度为原高度的一半,再落下,
    1) 写程序算出皮球从第10次落地后反弹高度是多少?
    2) 球共经过多少米路径?

  2. 打印九九乘法表:
     1x1=1
     1x2=2 2x2=4
     1x3=3 2x3=6 3x3=9
     .....
     1x9=9 2x9=18 ........ 9x9=81

  3. 分解质因数:
     输入一个正整数,分解质因数:
     如输入: 90 则打印:
         90 = 2*3*3*5
      (质因数是指最小能被原数整除的素数(不包含1))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值