np.zeros是否定义了一个全局变量

时间:2017-10-31 11:58:55

标签: python numpy

这是我的代码

import numpy as np

def f(x):
    x += 3
    return x

x_initial = np.zeros(3)
print(x_initial)
print(f(x_initial))
print(x_initial)

它返回:

[ 0.  0.  0.]
[ 3.  3.  3.]
[ 3.  3.  3.]

好像' x_initial'是一个全局变量。为什么呢?

1 个答案:

答案 0 :(得分:2)

x_initial是一个可变对象。将其传递给函数f()并修改它将修改对象。它就像你将一个列表传递给一个函数并修改它一样:

def f(l):
    l.append('something extra')

l = []
f(l)
print(l)
f(l)
print(l)

输出:

['something extra']
['something extra', 'something extra']