Python 函数默认参数的坑?为什么不能用可变对象做默认值?
默认参数在函数定义时求值一次,且对象被复用。若用可变对象(list/dict)作默认值,多次调用会共享同一对象:def f(a, lst=[]): lst.append(a); return lst——连续调用会累积数据(经典坑)。正确做法:默认值用 None,函数内 if lst is None: lst = []。同理默认参数绑定 lambda 等也会共享。这是面试高频题,考察对 Python 求值时机的理解。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。