一.生成器
上节课协议中介绍了迭代器协议,但是需要定义类,而只用函数可以生成的就叫做生成器
1.生成器的关键字是 yield ,它的作用和 return (结束方法并带出返回值)相似,都有暂停方法和带出返回值的作用。
2.斐波那契数列
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34…观察可得后一个数等于前两个数相加,如下,n 表示次数(代码块放在末尾)
二.装饰器
装饰器是在不改动原来函数的前提下,增加功能。。
语法格式:
def 装饰器函数名:
def 功能函数名():
功能
return 功能函数名
使用装饰器:@装饰器函数名
在调用装饰器的时候,会把函数作为参数传入装饰器(def upgrade)中。之后执行函数返回的内容,就是 drilling
内置装饰器:
(1)property(调用方法和调用属性一样,coco.play 后就不用加括号了)
(2)classmethod(第一个参数自动传入)
(3)staticmethod(不再自动传入 self 或者 cls )
三.异常
1.认识异常
例如上图,1除以0是错的,所以会报错。
(1)
这个表示报错信息
(2)
这个表示报错位置在C盘\Users\Admin\Desktop\计算机py\11生成器 迭代器\test.py 文件中的 98 行,但是我们不需要去数行数,因为在编辑模式的右下角会显示光标所在行数(Ln)
(3)
这个则表示是哪一个错误
(4)
而这种错误一般会直接出现提示框,点完确定后会告诉你错误的位置,红色标注的就是错误的位置或是提示你在标红的前面出现错误,一般是标红之前,错误是缺少缩进或用中文编码或是符号。(错误的地方是用中文写的括号,就是在标红之前)
2.异常的处理方法(报错也进行执行)
(1)异常处理语法:
try(捕捉):
可能出现报错的代码放入 try :缩进里面
except(处理):
try 里面的代码报错执行 except :缩进里面的代码
(2) except Exception as e
不进行报错,但会出现错误原因。如下:invalid literal for int() with base 10: ‘级’
(3)细致处理异常
(4)断言(assert)
和 if 类似,不同点是如果为False直接报错
斐波那契:
def fibonacci(end):
n,a,b = 0,0,1
while n < end:
a,b = b,a+b
yield b
n += 1
a = fibonacci(12)