一、生成器
通过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
例1:
#装饰器
def func(f):
def func1():
print('我是额外增加的函数')
reuturn dunc1
#使用装饰器
@func
def test():
print('我是基础函数')
test()
>>>我是额外增加的函数
例2:
#装饰器
def func(f):
def func1():
f()
print('我是额外增加的函数')
reuturn dunc1
#使用装饰器
@func
def test():
print('我是基础函数')
test()
>>>我是基础函数
>>>我是额外增加的函数
#内置装饰器
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方法')
#异常
#放可能存在异常的信息
try:
print(aaa)
#抛出异常或者返回异常
except NameError as error:
print('变量名错误,错误信息%s'%error)
except TyoeError as error:
print('类型错误,错误信息:%s'%error)
except Exception as error:
print('未知错误')
finally:
print('不管有没有错误,我都执行')
#主动抛出异常
raise TypeError
#断言:如果条件不存在就会报断言的错误
assert 2==1
print(1)