如何在Python函数中传递变量?

nus*_*sun -1 python variables

如果我在Python 2.7中运行以下代码,我会为a和b打印[2.,2.,2.].为什么b与a一起变化?非常感谢!

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)
Run Code Online (Sandbox Code Playgroud)

jav*_*vad 5

因为b并且a指的是内存中的相同列表.b = a没有创建新的副本a.试试这个,看看差异:

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)
Run Code Online (Sandbox Code Playgroud)

b = a.copy()将创建一个完全类似于元素的副本a,而b=a只是创建一个对现有列表的新引用.

  • 此外,括号之间只需要一个冒号. (2认同)