|
- def make_great(magic_names,new_names):
- while magic_names != []:
- current = magic_names.pop()
- print (2,id(new_names))
- new_names.append(current)
- print (3,id(new_names))
- new_names = [new_name + ' the great ' for new_name in new_names]
- print(4,id(new_names))
- print(new_names)
- return new_names
- magic_names = ['liu','li','zhao']
- new_names = []
- print (1,id(new_names)) #打印变量的内存地址
- print(make_great(magic_names,new_names))
- print(new_names)
复制代码
看样子,是在你添加“the great”的这一步,变量的内存地址发生的变化,也就是说它是重新在函数内定义了一个局部变量new_names,而不是函数外部的new_names,但是在new_names.append的时候,还是用的外部的变量,所以就出现了你这种情况,具体为什么会这样的深层原因我就不知道了 |
|