Python 函数默认参数的坑?为什么不能用可变对象做默认值?
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
默认参数在函数定义时求值一次,且对象被复用。若用可变对象(list/dict)作默认值,多次调用会共享同一对象:def f(a, lst=[]): lst.append(a); return lst——连续调用会累积数据(经典坑)。正确做法:默认值用 None,函数内 if lst is None: lst = []。同理默认参数绑定 lambda 等也会共享。这是面试高频题,考察对 Python 求值时机的理解。
回复
0 条回复