for循环迭代中的字符串变量

时间:2017-06-12 07:46:28

标签: python python-3.x

在下面的程序中,我们知道String在python中是不可变的,如果我们将值重新分配给python中的字符串,则创建新的变量(引用)。

S = "Nagu"
print (id (S))

S = "Santh"
print (id (S))

输出:

43578232
43578288

在下面的程序遍历列表名称中,

names = ["nagu","santh"]

for name in names:
    name = "K." + name
    print("{0} : {1}".format(id(name),name))

输出:

43579688 : K.nagu
43579688 : K.santh

for循环中的name变量从列表中获取不同的值而不更改id的可能性如何?

1 个答案:

答案 0 :(得分:0)

names = ["nagu","santh"]

for name in names:
    print("before assignment -- {0} : {1}".format(id(name),name)) # you will get different ids before assignment
    name = "K." + name # you are now assigning value to variable name for temporary which has lifespan of a single loop
    print("{0} : {1}".format(id(name),name))

结果:

before assignment -- 2856389816760 : nagu
2856391256640 : K.nagu
before assignment -- 2856391254624 : santh
2856391256640 : K.santh

在正常流程中,当您重新分配值时,其ID仍然存在。 但是在'for'循环中,当您遍历列表项时,当循环完成一个循环时(在下一个循环开始时,将释放内存),将释放先前对id的引用。