将引用传递的参数复制到方法以避免无意中修改参数的最佳实践

2024-06-14 09:42:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我在执行下面这行代码时的意图是使用cv2来绘制我的原始图像(即img)。据我所知,它这样做了,但修改了img(这是不理想的)。你知道吗

cbImg = cv2.drawChessboardCorners(img, (nx, ny), corners, ret)

我知道Python是通过引用传递的,这意味着可以通过该方法更改参数。为了避免修改原始图像,有必要对副本进行操作(例如,如下所示)

cbImg = cv2.drawChessboardCorners(copy.copy(img), (nx, ny), corners, ret)

我将一个副本传递给cv2.drawChessboardCorners(),因为我无法修改该方法。但是,我看到了许多在方法中执行复制的示例。你知道吗

是否有一个最佳实践,关于复制应该发生在哪里?换言之,如果我使用的是其他人的方法,我是否应该始终传递一份副本以确保我的原始图像不被修改?或者,在编写自己的方法时,是否应该始终(或从不)在方法中执行复制,以确保不会无意中修改其他人的参数?此外,假设通过引用传递的参数应该修改(或不修改)通常是明智的吗?你知道吗


Tags: 方法代码图像img参数副本cv2意图
1条回答
网友
1楼 · 发布于 2024-06-14 09:42:40

最佳实践是让函数清楚地知道它们是否修改了参数。理想情况下,他们不会,因为这更容易推理。如果数据不大,则可以创建和返回新值。你知道吗

只有当您知道函数修改了它的参数,并且您确实需要原始值和修改后的值时,才可以进行复制。你知道吗

相关问题 更多 >