python的一个小问题

请问为啥这个题选D?
D是课本标准答案,计算机二级Python指定教材课后答案
我觉得ls原来是空,append加了一个1,那么只有一个1啊
a,b应该都是[1]才对
有大佬指教一下吗?

对于使用默认值参数是容器的函数时,要特别小心。

此时多次调用它们得到的结果是在同一个容器里。

题目中ls指向的是空列表——容器。那么每次对这个ls进行append,都是对同一个容器append,

所以最终结果是[1,1]

https://nikos7am.com/posts/mutable-default-arguments/  这里有解释

感谢!!!

 

1、形参为list情况

2、func调用了两次

3、a、 b 都指向了同一个list;

故而最后打印出来的其实就是形参的那个list;

 

因为,a、b指向了同一个list;而list的(执行完b)最终结果为[1, 1]; 故a也等于[1, 1]