add by zhj: 文章写的很好,其实只要默认参数在函数中只读不写,那默认值就不会被修改,可变类型做默认参数就不会有问题 方法二中,当result is None时,修改result的指向,不再指向默认参数对象,而是赋值一个新的对象.如下,可以看到,result的id变化了 In [4]: def f(p=None, q=[]): ...: print id(p), id(q) ...: if p is None: ...: p = [] ...: print id(p) ...: In […