python 学堂在线_(3.17学堂在线python学习笔记)

@[TOC](3.17学堂在线python学习笔记)

# 重要笔记

## Assertion和控制流的关系

1. 在python中,抛出异常作为一种检测和控制代码流的重要方式

1e76fa6743f6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

2. 一个例子帮我们理解怎么样用这些异常来传递参数

3. 三个上面例子的赋值案例和结果(蓝字)

1e76fa6743f6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190317110344930.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5MzgyMQ==,size_16,color_FFFFFF,t_70)

4. 简单思考一下,为什么这种序号③里面的案例很方便?如果我们仅仅使用②当中的错误处理器来处理所有错误,做一个脚本式的代码的话,不仅效率低,使得代码更难读,而且很容易出错误。

5. 如果一味坚持用传统代码,结果将会是这样(一团糟,对吧)

1e76fa6743f6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

![,](https://img-blog.csdnimg.cn/20190317110850995.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5MzgyMQ==,size_16,color_FFFFFF,t_70))

## Assertions

1. 如果我们只想确认计算的假设达到了,我们仅仅使用Assertion就可以了

2. 仅仅在代码当中“插入”有关“断言”的代码就可以检测代码运行到这块的时候假设条件有没有满足?如果没有满足直接抛出一个异常,从本质上来说这是处理异常更简单的方式,也是防御式编程的好例子

```py

assert not 1+1>0

print('succeeded')

```

这个就会抛出AssertionError

```py

assert  1+1>0

print('succeeded')

```

这个就会正常运行出`'succeeded'`

3. 这么看assert确实是一个非常好用的断言语句,像下面的例子就是很谨慎地检查输入和输出的方式,也叫前置条件和后置条件检查,这样不仅能够防止输入错误,还能捕获到可能发生的意外,当然,相比try...except方式,它丧失了一点点效率,因为每次开始就强制检查是否满足条件,不像try遇到了错误再去看是什么错误

1e76fa6743f6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190317112109423.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTU5MzgyMQ==,size_16,color_FFFFFF,t_70)

4. 小例子测试assertionError

5. 如果输入`Normalize([0, 0, 0])`当然结果就会是

`AssertionError: Cannot divide by 0`

```py

def Normalize(numbers):

max_number = max(numbers)

assert(max_number != 0), "Cannot divide by 0"

for i in range(len(numbers)):

numbers[i]  /= float(max_number)

assert(0.0 <= numbers[i] <= 1.0), "output not between 0 and 1"

return numbers

```

# 四号习题集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值