Python实践92-可变对象作为函数默认参数

函数默认值

  • 函数的默认值只被赋值一次。这使得当默认值是可变对象时会有所不同,比如列表、字典或者大多数类的实例。
  • 例如,下面的函数在后续调用过程中会累积(前面)传给它的参数:
def f(a, L=[]):
    L.append(a)
    return L

print(f(1))
print(f(2))
print(f(3))

这将输出:

[1]
[1, 2]
[1, 2, 3]
  • 如果你不想让默认值在后续调用中累积,你可以像下面一样定义函数:
def f(a, L=None):
    if L is None:
        L = []
    L.append(a)
    return L

代码地址

本系列文章和代码已经作为项目归档到github,仓库地址:jumper2014/PyCodeComplete。大家觉得有帮助就请在github上star一下,你的支持是我更新的动力。什么?你没有github账号?学习Python怎么可以没有github账号呢,快去注册一个啦!