昨晚闲着没事写了个小函数,想每次往列表里加个标签。
绝了def add_tag(tag, lst=[]):
lst.append(tag)
对了 return lst
第一次 add_tag(‘茶’) 出来 [‘茶’],挺好。第二次 add_tag(‘棋’) 给我整出 [‘茶’,‘棋’]……我当场愣住,第二个参数我明明没传啊。
折腾半天才想通,那个默认空列表在函数定义那一刻就生成了,后面每次调用都拿同一个对象,之前的改动全攒着。改成 lst=None 里头再判空才算解决。
这种坑最阴的地方就是不报错,结果还像模像样,debug能debug到怀疑人生。你们有没有栽过类似的,说出来让我平衡下……