Python面试题_Python的一个BUG型函数传参及解决方法

Python面试题_Python的一个BUG型函数传参及解决方法

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,也可以回答面试时,面试官给你下的套了

最后编辑于:2019/11/09作者: 牛逼PHP

发表评论