任何长时间修补Python的人都会被以下问题咬伤(或撕成碎片):deffoo(a=[]):a.append(5)returnaPython新手会期望这个不带参数调用的函数总是返回一个只有一个元素的列表:[5]。结果却大不相同,而且非常惊人(对于新手而言):>>>foo()[5]>>>foo()[5,5]>>>foo()[5,5,5]>>>foo()[5,5,5,5]>>>foo()我的一位经理曾经第一次遇到此功能,并称其为该语言的“重大设计缺陷”。我回答说这种行为有一个潜在的解释,如果你不了解内部情况,确实非常令人费解和意外。但是,我无法(对自己)回答以下问题:在函数定义而不是函数执行