python 生成器yield后跟字典数据类型

今天做项目时,出现了一个问题,debug了好久,记录如下:

函数1我设置一个生成器,生成器关键字yield后面跟的是一个字典类型。

def func1():

        dic1  = dict()

        for i in range(10):

                dic1[i] = i

                yield dic1

在函数外进行for循环遍历,当满足某一条件进行update(dic2)操作时,发现update操作后,后面几次循环中i的键值也会变成update操作之后的键值。

ff1 = func1()

for i in ff1:

        if 1 in i.keys():

                i.update({'test':'test'})

         print(i)

#####

{0: 0}
{0: 0, 1: 1, 'test': 'test'}
{0: 0, 1: 1, 'test': 'test', 2: 2}
{0: 0, 1: 1, 'test': 'test', 2: 2, 3: 3}
{0: 0, 1: 1, 'test': 'test', 2: 2, 3: 3, 4: 4}
{0: 0, 1: 1, 'test': 'test', 2: 2, 3: 3, 4: 4, 5: 5}
{0: 0, 1: 1, 'test': 'test', 2: 2, 3: 3, 4: 4, 5: 5, 6: 6}
{0: 0, 1: 1, 'test': 'test', 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7}
{0: 0, 1: 1, 'test': 'test', 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8}
{0: 0, 1: 1, 'test': 'test', 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}

############

yield返回的迭代器直接指向dic1 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值