可能重复:
Python中的“最少惊讶”:可变默认参数
我对可选参数如何在Python函数/方法中工作感到困惑。
我有以下代码块:
>>> def F(a, b=[]):
... b.append(a)
... return b
...
>>> F(0)
[0]
>>> F(1)
[0, 1]
>>>
为什么F(1)
返回[0, 1]
却不返回[1]
?
我的意思是,内部正在发生什么?
几年前PyCon的优秀文档- 解释了默认参数值。但基本上,由于列表是可变对象,并且关键字参数在函数定义时进行评估,因此每次调用该函数时,您都会获得相同的默认值。
正确的方法是:
def F(a, b=None):
if b is None:
b = []
b.append(a)
return b
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句