Day17

本节内容: 1.生成器 2.列表生成式 3.生成器的创造方式 4.生成器中的send函数 5.验证码 一.生成器 s=(x*2 for x in range(10)) print(s)# at 0x00000000022FC7D8>数据并未放入生成器中只是需要的时候才把数据放进内存 print(next(s))#输出0 print(next(s))#输出1 二.列表生成式 X=[x for x in range(x)]#前后的x必须保持一致 三.生成器的创造方式 1)(x*2 for x in range(5)) 2)Yield #生成器 def foo(): print('ok1') yield 1 print('ok2') yield 2 g=foo()#并不会执行foo函数而是继续向下执行next函数 next(g)#去执行foo函数打印ok1 next(g)#并不会重新从头执行foo函数而是会继续向下执行ok2 四.生成器中的send函数 #生成器send的功能是可以给yield传值 def foo(): print('ok1') count=yield 2 print('ok2') print(count) yield 3 g=foo() # a=next(g) # print(a) # b=next(g) # print(b) print(g.send(None))#等价于next(g)执行到count=yield 2节,然后执行g.send('eee') print(g.send('eee'))#接着上面的代码把send传的值传给count=eee,然后执行print('ok2')再执行print(count) yield3 从而g.send(‘eee’)接收foo返回的3 五.验证码 生成5位随机数的验证码包含字母和数字: #生成5位数字的随机数 import random def v_code(): code='' for i in range(5): add=random.choice([random.randrange(10),chr(random.randrange(65,91))]) code+=str(add) print(code) # code='' # for i in range(5): # code_num=random.randrange(10) # code+=str(code_num) # return code v_code()

posted on 2018-08-27 10:34  summer666  阅读(150)  评论(0)    收藏  举报