今天做项目时,出现了一个问题,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