Python新手估计可能会想这个函数返回一个只有元素的列表.但是结果却出人意料:

    1. >>> foo()
    2. [5]
    3. [5, 5]
    4. >>> foo()
    5. >>> foo()
    6. [5, 5, 5, 5]

    事实上这并不是设计缺陷,也不是什么内部或性能原因.

    试着这么来理解:一个函数是一个被它自己定义而执行的对象;默认参数是一种"成员数据",所以它们的状态和其他对象一样,会随着每一次调用而改变.