Python默认params混乱
我刚开始学习Python,我对这个例子感到困惑:
如果要初始化一次,第二次调用时不会不是None吗?我知道上面的代码有效,但无法解决这个“初始化一次”的描述. 最佳答案
如果您没有为它传递值,则将变为None:append_to(1)并且仅当to为None时,您的代码才会将本地名称重新绑定到函数体内新创建的列表:to = []. 函数的默认值只分配一次,即您指定为默认值的任何内容,该对象将用于您对函数进行的每次调用,并且不会更改,通常每次使用相同的默认值引用打电话给你做功能.将mutable分配为默认值时,这很重要:
多次运行上面的函数,您将观察到列表越来越多,因为每个函数调用共享的每个函数只能获得一个参数默认值的副本.但请注意:
每次调用localVars时都会执行d = [];当函数完成其工作时,每个局部变量在引用计数降为0时被垃圾收集,但不是参数的默认值,它们在执行函数后生存,并且在执行函数后通常不进行垃圾收集. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |