Python-局部变量保持内容重复调用函数
我举了以下例子:Python-局部变量保持内容重复调用函数,python,python-3.x,list,Python,Python 3.x,List,我举了以下例子: def some_function(input1, some_list=[]): if some_list==[]: some_list.append(input1) if input1 % 3 != 0: some_list.append('last_one') else: some_list.append(input1/3) some_list = some_function(input
def some_function(input1, some_list=[]):
if some_list==[]:
some_list.append(input1)
if input1 % 3 != 0:
some_list.append('last_one')
else:
some_list.append(input1/3)
some_list = some_function(input1/3, some_list)
return some_list
def main():
#first call
print(some_function(9))
#second call
print(some_function(99))
return
if __name__ == '__main__':
main()
输出为:
[9, 3.0, 1.0, 'last_one']
[9, 3.0, 1.0, 'last_one', 33.0, 11.0, 'last_one']
我不明白为什么函数中的局部变量“some_list”在第二次调用时仍然包含第一次调用的内容。我认为当第二次调用发生时,它应该被启动并为空。这是一个常见的问题 通常的解决方案是默认为“无”,并在需要时实例化一个新列表:
def some_function(input1, some_list=None):
if some_list is None:
some_list = []
...