一步步学习Python---9

我们今天来讲讲Python的装饰器和异常处理与分析,这篇内容讲完之后Python的基础内容就只剩下正则表达式了,结束了Python的基础知识后我决定给大家讲讲数据库的相关知识,不过在此之前我要先带大家了解一下虚拟机的基本操作,废话不多说了,让我们开始今天的内容!

一.生成器

生成器又叫迭代器
我们来思考一个问题:
在这里插入图片描述
我们先来给大家讲一下yield 关键字 :
可以阻塞代码的运行 只有执行迭代的话 才会执行代码
yield 可以返回内容 返回内容可以使用变量进行接收

给大家举个例子:

ef func():
    print(111)
    yield 1
    print(222)
    yield 2
    print(333)
    yield 3

a = func()
next(a)      # 111
b = next(a)  # 222
print(b)
c = next(a)  # 333
print(c)

大家可以清楚的看到yield关键字的作用,我们再来用它实现斐波那契数列:

# 生成菲波那切数列   0,1,1,2,3,5
# yield作用: 依次返回结果
def fib(end):
    a,b = 0,1
    for i in range(end):
        a,b = b,a+b
        yield b
x = fib(10)
for i in range(10):
    b = next(x)
    print(b)

在这里插入图片描述
在这里插入图片描述

二.装饰器

本质: 闭包函数(嵌套函数+外层函数返回内层函数的函数体)

一样的我们来思考几个问题:
在这里插入图片描述

我们来自定义一个装饰器:

def func1(f):   # 参数用来接收原函数的函数体
#     f()
#     def func2():
#         print('我是装饰器')
#         f()
#     return func2
# @func1   # 利用装饰器   # 直接运行时   装饰器外层函数  会被调用
# def test():   # 原函数变成了装饰器内层函数的函数体   func2
#     print('我是原函数!')
# 相当于执行了 test = func1(test)的操作

在这里插入图片描述
在这里插入图片描述

我们来看看内置装饰器:

#内置装饰器
# class Person:
#     def __init__(self,name,):
#         self.name = name
#         self.age = age
#
#     @property  # 让方法可以像属性一样被调用(不用加括号)
#     def play(self):
#         print('我是play方法!')
#     @classmethod  # 自动把类传给参数接收
#     def learn(cls):
#         print('这是learn方法!')
#     @staticmethod  # 可以让这个方法不需要去传入self,cls这种必备参数
#     def sleep(self):
#         print('我是sleep方法!')
#     def __call__(self):
#         print('我是call方法!')

在这里插入图片描述
我们可以对装饰器做一个简单的总结:
在这里插入图片描述

三.异常

我们来思考几个问题:

在这里插入图片描述
处理异常

第一点:尽量避免bug(考虑全面)
第二点:try–except

下面我给大家举个例子:

try:     # 没报错   执行
    a = b
except NameError as n:  # try里面的代码出错时  运=行
    print(f'错误信息为{n}')
    b = 'null'

在这里插入图片描述
当我们不知道错误类型的时候可以写父类错误,如:

except Exception as e:   # 未知错误  Exception是所有错误类型的父类
    print(f'错误信息为{e}')

在这里插入图片描述
断言 assert
作用与if类似 可以用作判断
判断条件是否满足断言的条件时 满足时代码可以运行
否则代码终止
作用:可以用作限制等
在这里插入图片描述

四.错误查找

在这里插入图片描述
异常查找
错在哪 什么错

在这里插入图片描述

五.作业

在这里插入图片描述
这次的作业难度不大,我准备将上次的作业和这次的作业一起在下一篇文章讲解,大家端午节快乐!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寰( *^_^* )

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值