我从这里获得了这段代码:http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables
它的主要思想是在Python中,变量是对象的名称标签。但是后来作者给出了以下代码,我不明白他们为什么表现不同。
def bad_append(new_item, a_list = []):
a_list.append(new_item)
return a_list
bad_append(1) # returns [1]
bad_append(2) # returns [1, 2]
另一个功能:
def good_append(new_item, a_list = None):
if a_list == None:
a_list = []
a_list.append(new_item)
return a_list
good_append(1) # returns [1]
good_append(2) # returns [2]
这个问题可能是相关的,但许多概念混淆了(例如可变,参考,变量),我仍然感到困惑...... How do I pass a variable by reference?
因此,我是否可以要求对上述两个函数为何表现不同有某种解释?