迭代器
li = [1, 2, 3, 4, 5]
it = iter(li)
try:
while True:
print(next(it))
except StopIteration:
pass
生成器
lis = [i for i in range(10)]
tu = (i for i in range(10))
print(lis)
print(tu)
yield 是一个类似 return 的关键字,迭代一次遇到yield时就返回yield后面的值。
重点是:下一次迭代时,从上一次迭代遇到的yield后面的代码开始执行。
简要理解:yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。
def yield_test(n):
for i in range(n):
print("输入:", i)
yield call(i)
print("end...")
def call(i):
return i*2
for i in yield_test(5):
print("输出:", i)
字典转json格式的字符串
import json
a = {'name': 'zhangsan', 'age': 18, 'sex': 'male', 'has': True, 'test': None}
b = json.dumps(a)
print(type(b), b)
json格式字符串转字典
c = json.loads(b)
print(type(c), c)
md5加密
import hashlib
md5 = hashlib.md5()
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest())
获取文件md5值
with open('abc.png', 'rb') as f:
md5.update(f.read())
print(md5.hexdigest())