标签:
是访问集合元素的一种方式,只能往前不能往后
迭代器的特点:
1,访问者不需要关注迭代器内部结构,只需通过next()不断取下一个内容
2,访问不能回退
3,循环较大数据集合时,省内存
4,不能随机访问集合中的某一个值
iter()生成迭代器
__next__()访问迭代器,可以迭代生成器
yield
有yield的函数叫生成器,不能直接调用
必须要用__next__()等迭代器来访问,迭代器可以迭代一个集合,也可以迭代一个yield函数
yield可以传出消息__next__(),也可以传入消息send()
send()同时可以传给yield数据,也可以接受数据
def show_1(): print("1p") yield print("3p") yield print(show_1()) #<generator object show_1 at 0x000002A9682378E0> show_P=show_1() #赋值保存地址 show_P.__next__() show_P.__next__() 1p 3p
#yield传入传出数据 def show_2(): print("1P") yield 100 print("3P") n=yield print("%dP"%n) yield show_P=show_2() show_P.__next__() show_P.__next__() show_P.send(10) #传入10
#模拟range() def Lrange(m=0,n,l=1): count=m while count < n: yield count count += l for i in Lrange(2,10,2): print(i)
异步 串行
装饰器原理:
@w1的时候会做这么几件事情:
1,执行w1()
2,把修饰的函数show传入w1的形参
3,装饰器必须有返回值,返回值为了把原来的show函数封装到新的show函数
4,装饰器必做的一件事就是再嵌套一层函数,封装以前的函数
装饰器一:
def w1(func): def outer(): print(‘before‘) func() return outer @w1 def show(): print("show")
装饰器二(带参数的复杂装饰器):
写装饰器的成本比写函数高,写装饰器比较难,让外部人调用的时候,要自定义登陆界面,让他们写函数,
然后你的装饰器要把他们定义的函数套到装饰器上,@w1(他们自己写的函数),也就是把装饰的东西封装
到函数,装饰器调用封装的装饰函数
def before(): print(‘login!!‘) def w2(before_func): def accept_main(main_func): def outer(): before_func() main_func() print(‘after‘) return outer return accept_main @w2(before) def show(name): sore=["dd","ff","gg"]
标签:
原文地址:http://www.cnblogs.com/euewrqe/p/5741122.html