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

时间:2016-02-05 01:13:40

标签: 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)

2 个答案:

答案 0 :(得分:5)

因为ba指的是内存中的相同列表。 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)

b = a.copy()将创建一个与<{1}}的元素完全相似的副本,而a只会创建对现有列表的新引用。

答案 1 :(得分:2)

numpy将使用指针进行复制,除非你另有说明:

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.]