Python迭代器和生成器 yield语句 json和hashlib库

迭代器

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)                       # <generator object <genexpr> at 0x00000207E0BDCD48>

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)    # <class 'str'> {"name": "zhangsan", "age": 18, "sex": "male", "has": true, "test": null}

json格式字符串转字典

c = json.loads(b)
print(type(c), c)    # <class 'dict'> {'name': 'zhangsan', 'age': 18, 'sex': 'male', 'has': True, 'test': None}

md5加密

import hashlib
md5 = hashlib.md5()
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest())
# print(hashlib.md5('123456'.encode('utf-8')).hexdigest())

获取文件md5值

with open('abc.png', 'rb') as f:
    md5.update(f.read())
    print(md5.hexdigest())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值