生成器和装饰器、异常

装饰器和异常

通过yield关键字将函数对象变成迭代器对象,这种叫做生成器

生成器的本质就是迭代器

##def func():

print(111)

yield 1

print(222)

yield 2

print(333)

yield 3

斐波那契数列

end是次数

##def fib(end):

# n是初始次数值,a,b都是开始的两个值

n,a,b = 0,0,1

while n<end:

a,b = b,a+b

yield b

n += 1

装饰器

装饰器的本质就是利用了闭包

调用的时候以一个回调的形式去使用

##def func(f):

def func1(x):

x = x*10

f()

print(‘我是额外增加的函数’)

return x

return func1

使用装饰器

##@func
##def test():

print(‘我是基础函数’)

##@func
##def test1():

print(‘我也是基础函数’)

内置装饰器

##class Person():

def init(self,name,age):

self.name = name

self.age = age

# 让调用方法可以像调用属性一样

@property

def play(self):

print(‘这是PLAY方法’)

# 第一个参数自动传入类

@classmethod

def learn(cls):

print(‘这是LEARN方法’)

#不再需要传入self或者cls,静态方法

@staticmethod

def sleep():

print(‘这是SLEEP方法’)

##anyan = Person(‘anyan’,18)

#错误查找的顺序:从下往上

异常

##open(‘a111111.py’,‘r’)
##print(111)

##def a():

print(111)

##def b():

a()

##def c():

b()

##c()

放可能会出现异常的代码

##try:

print(aaa)

抛出异常或者返回异常

##except NameError as e:

print(‘变量名错误,错误信息:%s’%e)

##except TypeError as e:

print(‘类型错误,错误信息:%s’%e)

Exception是所有异常的父类

##except Exception as e:

print(‘未知错误’)

当try里面的代码没有错误的时候,就会执行else的代码

##else:

print(‘未发生错误’)

上面执行完就会执行finally的代码

##finally:

print(‘不管有没有错误,我都执行’)

主动抛出异常

##raise TypeError

断言,如果条件不成立就会报断言的错误

测试代码

assert 1==1
print(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一逍倾城

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

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

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

打赏作者

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

抵扣说明:

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

余额充值