一、情况描述
我在python代码中,定义了如下的两个公有变量
USER_ANSWER_AllArea_Result={}
All_User_All_Paper_Result=[]
当我使用如下代码添加列表新值:
All_User_All_Paper_Result.append(USER_ANSWER_AllArea_Result)
输出All_User_All_Paper_Results时发现,里面的所有内容都一样。如下图。
二、存在原因
因为USER_ANSWER_AllArea_Result={} 和All_User_All_Paper_Result=[] 都是公有变量,在内存中已分配好固定地址,因此,当All_User_All_Paper_Result.append(USER_ANSWER_AllArea_Result)时,所有内容就会突然变成完全一样。
三、解决办法
把这个代码:All_User_All_Paper_Result.append(USER_ANSWER_AllArea_Result)
改成如下的代码即可解决问题。
tempstr=str(USER_ANSWER_AllArea_Result)
All_User_All_Paper_Result.append(tempstr)
上述代码的改良,实际上就是使用了临时变量。因为临时变量在系统中的使用一次定义一次,没有固定的内存地址,所以,当添加为新项后,所有的内容各自是各自的,不会和之前的变成相同的值。