当我阅读以下讲义时:http: //python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables
我遇到了以下示例。基本上,它声称:
def bad_append(new_item, a_list=[]):
a_list.append(new_item)
return a_list
不是将项目附加到列表的最佳方式,因为a_list
在函数定义时进行评估。
相反,更好的选择是:
def good_append(new_item, a_list=None):
if a_list is None:
a_list = []
a_list.append(new_item)
return a_list
因为它在函数的运行时定义了变量。
来自C背景,这里不是a_list
局部变量吗?它如何将其值从一个函数调用存储到另一个函数?此外,有人可以详细说明为什么第二个例子比第一个更好吗?在定义中定义函数有什么问题?它似乎没有覆盖原始值或任何东西。
谢谢!