我正在制作一个函数来执行中点位移算法,以及其他一些看起来很逼真的地形生成函数,在二维列表(格式为 [[n11,n12,...],[n11,n12,...] ,...])
我的问题是,在 python 中,在这种情况下更改输入列表是标准的(没有返回值)还是制作列表的深层副本并返回它更好?
我知道复制和返回效率较低,但是我不希望使用该函数让其他人感到困惑。
这也是我经常思考的问题。第二种方法可能更干净、更好,因为客户不需要对你的功能做任何假设,而且不会让人困惑。就我个人而言,我更喜欢这样。每当我调用一个函数时,我希望它返回一个旧值不变的新值。但是,这只是我。
就个人而言,我将其作为第一种方法,因为我的许多应用程序都对效率至关重要。
如果有必要,我的解决方案是设置一个标志,并根据标志以不同的方式做。例如,函数将是:
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