在定义python函数的默认参数时,为什么使用不可变对象就可以避免可变对象带来的问题?

def test(def_arg=None):

if def_arg == None:
    def_arg = []
def_arg.append(1)return def_arg

test()
test()
第一次调用test函数时,def_arg在函数定义时已被赋值为None值,所以def_arg被绑定到一个列表对象,然后增加了一个item。

第二次调用test函数时,def_arg的值为什么仍然是None而不是[1]呢?


米脂
浏览 515回答 1
1回答

繁星coding

def add_end(L=[]):L.append('END')return LPython函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python