上述代码是在完成老师布置的哈夫曼编码作业时写的,其中在通过id取变量值的时候出现了一点点小失误,debug一下,发现通过id取变量前3轮都没有问题,在第四轮的时候不知道出现了什么问题,T1节点永远显示不出来具体的数据,而且多次debug的情况不一样,有的debug可以完整走到return,有的走到第四轮T1重新通过id取变量的时候就退出了。
初步怀疑是python的内存管理没做好,在第四轮循坏的时候,我通过id取第二轮存进字典的变量,可能内存已经被释放或者被回收,亦或者别覆盖了部分。
这个作业后来修改了一下,不用id也可以,就直接TreeNode_dict[minkey1+minkey2]=bind就行。
=======================================================================
2023/10/14日更新,这几天沉淀了一下,感觉应该是保存id的话仅仅只是保存了一个数值,变量指向改变之后,没有变量引用那块内存空间,就会被释放。但是直接保存bind变量(其实也是保存那块地址),但是系统会默认有变量引用了那块内存空间,不会自动释放。以上仅是猜测。