同行交流群看到这个问题,感觉很有意思,来分析一下
问题:
下列代码输出是什么?
```python
def foo(a=[]):
a.append(5)
return a
print(foo())
print(foo())
```
A.`[5] [5]`
B.`[5] [5,5]`
C.`[5] [5]`
D.`[5] [5,5,5]`
3
2
1
答案是B,你答对了吗?
分析:
这个问题的关键词提炼:
1.append是什么?
2.foo()是什么?
3.使用语言:Python
答疑:
a.在Python中,append() 是列表对象的一个方法,用于在列表的末尾添加一个元素。例如:
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 输出 [1, 2, 3, 4]
这个方法可以用于动态地向列表中添加新的元素,而不需要重新分配内存空间。
b.函数 foo() 的参数 a 是一个可变对象(列表),并且默认值是一个空列表 []。
当你调用 foo() 时,如果没有传入参数,将会使用默认的空列表。每次调用 foo() 时,都会修改这个默认列表,向其添加元素 5,因此第一次调用 foo() 后返回 [5],第二次调用 foo() 返回 [5, 5]。