如何处理默认参数值作为累加器



在python中,我们可以在定义函数时设置默认参数值。但是默认参数值只计算一次。因此,如果我们在函数中更改这些参数的值,更改将在以后的调用中累积。

表示函数将保留状态。它与面向对象的思想不一致,并且会带来很多混乱。

我认为这是一个糟糕的设计。你这么认为吗?

不,它只是意味着你应该了解你的工具。您的方法需要在def时刻存储一个隐藏过程,并在每次调用函数时求值;在Python中,"显式优于隐式"是(据称的)设计原则。

由于这不是一个辩论的网站,而是一个编程问题和;a,这里是如何做正确的:

不是

def funct(array = []):

def funct(array = None):
    if array is None:
        array = []

同样的"抱怨"也适用于Ruby,顺便说一句(可能还有其他具有默认参数值的语言),而且不仅限于Python。

最新更新