Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的函数总是返回更长的列表?_Python - Fatal编程技术网

Python 为什么我的函数总是返回更长的列表?

Python 为什么我的函数总是返回更长的列表?,python,Python,我打开python解释器,编写代码并运行以下函数 >>> def crazy_function(my_list=[]): ... my_list.append(0) ... return my_list ... >>> crazy_function() [0] >>> crazy_function() [0, 0] >>> crazy_function() [0, 0, 0] >>> cr

我打开python解释器,编写代码并运行以下函数

>>> def crazy_function(my_list=[]):
...     my_list.append(0)
...     return my_list
... 
>>> crazy_function()
[0]
>>> crazy_function()
[0, 0]
>>> crazy_function()
[0, 0, 0]
>>> crazy_function()
[0, 0, 0, 0]
>>> crazy_function()
[0, 0, 0, 0, 0]
>>> crazy_function()
[0, 0, 0, 0, 0, 0]
>>> crazy_function()
[0, 0, 0, 0, 0, 0, 0]
>>> 

发生了什么事?为什么我调用函数越多,函数返回的列表就越长?是否应该在每次调用函数时创建新的本地列表?

将可变对象指定给函数参数的默认值是一个常见错误。引述:

默认参数值在函数定义为 已执行。这意味着当 函数,并使用相同的“预计算”值 每次打电话。这对于理解 默认参数是可变对象,如列表或字典: 如果函数修改了对象(例如,通过向 列表),默认值实际上已修改。这通常不是 目的是什么


这个问题被问了很多——这些问题总是很快就解决了。真令人印象深刻。天哪,哇。谢谢你指导我找到一个资源。:)