在用户定义的函数中使用就地操作的传统智慧是什么?在用户定义的函数中使用就地操作将违反“无副作用”#34;用户定义的函数通常遵循的格言。这非常危险!例如:
import numpy as np
np.random.seed(123)
X = np.random.rand(4,2)
def my_shuffle(Y):
np.random.shuffle(Y)
return(Y)
print(X)
print(my_shuffle(X))
print(X) #Oops
我的解决方案:
import numpy as np
np.random.seed(123)
X = np.random.rand(4,2)
def my_shuffle_fix(Y):
import copy
Y_copy = copy.deepcopy(Y)
np.random.shuffle(Y_copy)
return(Y_copy)
print(X)
print(my_shuffle_fix(X))
print(X) #Better
这是一个很好的解决方法吗?