def f(x=[]):
x += [1]
x += [23]
print("***", x)
return x
'''
对于list这样可修改的结构,一旦作为默认实参,没有f([12,2])这样形式,
就会调用定义函数时保存的默认参数(修改后的结构),
print()函数会让函数全部执行完最后统一输出,故出现如下情况
'''
print('>>:', f(), f())
或
'''
会先让函数全部执行完,最后统一赋值
'''
x, y = f(), f()
print(x, y)
相同的输出:
*** [1, 23]
*** [1, 23, 1, 23]
>>: [1, 23, 1, 23] [1, 23, 1, 23]
python中print('>>:', f(), k()),先执行全部f(),k(),最后统一输出
本文深入探讨了Python中使用可变类型如list作为函数默认参数的常见陷阱,解释了为何这种做法可能导致意料之外的结果,并通过实例展示了如何避免这一问题。

被折叠的 条评论
为什么被折叠?



