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()
浙公网安备 33010602011771号