4

我正在制作一个函数来执行中点位移算法,以及其他一些看起来很逼真的地形生成函数,在二维列表(格式为 [[n11,n12,...],[n11,n12,...] ,...])

我的问题是,在 python 中,在这种情况下更改输入列表是标准的(没有返回值)还是制作列表的深层副本并返回它更好?

我知道复制和返回效率较低,但是我不希望使用该函数让其他人感到困惑。

4

2 回答 2

2

这也是我经常思考的问题。第二种方法可能更干净、更好,因为客户不需要对你的功能做任何假设,而且不会让人困惑。就我个人而言,我更喜欢这样。每当我调用一个函数时,我希望它返回一个旧值不变的新值。但是,这只是我。

于 2013-06-08T13:56:51.820 回答
2

就个人而言,我将其作为第一种方法,因为我的许多应用程序都对效率至关重要。

如果有必要,我的解决方案是设置一个标志,并根据标志以不同的方式做。例如,函数将是:

def func(input, deepcopy=false):
    if deepcopy:
        // deep copy the input as to_process
    else:
        // just point to_process to the input
    // process with the to_process        
于 2013-06-08T14:09:59.460 回答