Python面试题:
L = [1,2,3]
def f(n, lst=[]):
lst.append(n)
print(lst)
f(4,L) #结果是[1,2,3,4]
f(5,L) #结果是[1,2,3,4,5]
f(100) #结果是[100]
f(200) #结果是[100,200]
这可能是Python中的一个小BUG,默认参数(缺省参数)绑定在函数对象内部,且随函数的生命一直存在
解决方法:
def f(n lst=None):
if lst==None:
lst = []
lst.append(n)
print(lst)
先设置 lst 默认值是 None ,再在函数内部判断外部调用是否有传递参数进来,如果没有传,则给lst绑定一个空的列表。这样就可以解决Python的这个BUG,也可以回答面试时,面试官给你下的套了
发表评论