生成器与for循环的纠葛

时间:2019-03-25
本文章向大家介绍生成器与for循环的纠葛,主要包括生成器与for循环的纠葛使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

我先放例题了

v = [lambda :x for x in range(10)]
print(v)
print(v[0])
print(v[0]())

lambda   参数  :返回值

拆解:

f = lambda   :x for x in range(10)   

现在我们称 f 这个函数  参数为零  返回值是 x for  x in  range(10)

print(lambda :x for x in range(10))
#结果 <generator object <genexpr> at 0x037B6900>

上面这个是一个已经循环完了的生成器

例题

登陆注册 

在读取文件内容时,可以用生成器

# import hashlib
# import os
# def open_file():
#     with open('info',encoding='utf-8') as f1:
#         for line in f1:
#             v1,v2 = line.split(' ')
#             yield v1,v2  这里
# def md5(password):
#     md5 = hashlib.md5('*'.encode('utf-8'))
#     md5.update(password.encode('utf-8'))
#     return md5.hexdigest()
# def register():
#     user = input('user')
#     psw = input('password')
#     for username,password in open_file(): 这里
#         if user == username:
#             print('用户名已经存在')
#             break
#     else:
#         with open('info','a',encoding='utf-8') as f2:
#             f2.write(user+' ')
#             f2.write(md5(psw))
#     print('注册成功')
# def login():
#     user = input('user')
#     psw = input('password')
#     for username,password in open_file():   这里
#         if user == username and md5(psw) == password:
#             print('登陆成功')
#             break
#     else:
#         print('登陆错误,没有找到用户名')
# register()
# login()