码迷,mamicode.com
首页 > 其他好文 > 详细

生成器与for循环的纠葛

时间:2019-03-25 20:27:20      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:use   生成   int   返回   循环   upd   with open   word   lse   

我先放例题了

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()

 

生成器与for循环的纠葛

标签:use   生成   int   返回   循环   upd   with open   word   lse   

原文地址:https://www.cnblogs.com/CNHK1949/p/10566864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!