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

时间:2012-12-25 05:19:23

标签: python python-3.x

在python中,我们可以在定义函数时设置默认参数值。但默认参数值一次评估。因此,如果我们在函数中更改此类参数的值,则更改将在以后的调用期间累积。

这意味着一个函数将保持状态。它不符合面向对象的想法,会带来许多混乱。

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

1 个答案:

答案 0 :(得分:3)

不 - 这只是意味着你应该了解你的工具。您的方式需要在def时间存储隐藏的过程,并在每次调用函数时进行评估;在Python中,“显式优于隐式”是(所声称的)设计原则的选择。

由于这不是一个争论的网站,而是编程Q& A,这里是如何正确地做到这一点:

而不是

def funct(array = []):

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

同样的“抱怨”适用于Ruby,BTW(以及可能具有默认参数值的其他语言),并且不仅限于Python。