【发布时间】:2015-07-12 21:28:26
【问题描述】:
我对 Python 和 Numpy 还很陌生,在将 MATLAB 程序翻译成 Python 时遇到了这个问题。
据我所知,下面的代码通过修改全局变量表现异常,即使它不应该这样做。
import numpy as np
A = np.matrix([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
def function(B):
B[1,1] = B[1,1] / 2
return B
C = function(A)
print(A)
输出是:
[[0 1 2]
[3 2 5]
[6 7 8]]
函数将矩阵的中间数除以二并返回。但它似乎也在改变全局变量。
在这里,这个问题可以很容易地避免,但我试图理解它为什么会出现。
由于某些原因,如果函数将整个矩阵除以 2,则不会发生这种情况。
import numpy as np
A = np.matrix([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
def function(B):
B = B / 2
return B
C = function(A)
print(A)
输出是:
[[0 1 2]
[3 4 5]
[6 7 8]]
【问题讨论】:
标签: python function variables numpy global