请教下该代码的结果是如何获得的?

img


为什么结果是[1,1] [1,1],做题的时候遇到的,不知道该怎么解释?

好神奇,我也是头一次知道。
如果把ls定义到函数里面去,那么结果就会是[1][1]
而如果把ls定义在参数的位置,似乎它就成了一个静态变量

我搞清楚了,ls作为列表,是一个可变数据类型,当执行完a=func()时,ls=[1];当执行b=func()时,此时传递给func()时,ls不再是[],而是ls=[1],所以执行完该语句时,ls=[1,1],当print(a,b),其实是针对同一个列表ls的不同引用,不同引用不改变列表的值,所以结果是[1,1][1,1]

因为在print时是分别执行了a,b,所以a和b的结果都是[1],两个分别执行后就是两个[1]