函数中的可选参数及其可变的默认值

奥斯卡·梅德罗斯(Oscar Mederos):

可能重复:
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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章