How variables are passed in a Python function?
本问题已经有最佳答案,请猛点这里访问。
如果我在python 2.7中运行以下代码,我会得到A和B的[2,2,2]打印。为什么B和A一起更改?多谢!
1 2 3 4 5 6 7 8 9 10 | def test_f(x): a = np.zeros(3) b = a for i in range(3): a[i] += x print a print b return 0 test_f(2) |
型
因为
1 2 3 4 5 6 7 8 9 10 | def test_f(x): a = np.zeros(3) b = a.copy() for i in range(3): a[i] += x print a print b return 0 test_f(2) |
型
numpy将使用指针进行复制,除非您另有说明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import numpy as np def test_f(x): a = np.zeros(3) b = np.copy(a) for i in range(3): a[i] += x print a print b return 0 test_f(2) [ 2. 2. 2.] [ 0. 0. 0.] |
号