-5

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

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

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

4

1 回答 1

3

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

由于这不是一个讨论的网站,而是一个用于编程问答的网站,所以这里是如何正确地做到这一点:

代替

def funct(array = []):

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

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

于 2012-12-25T05:22:24.587 回答