Python全局变量与传参

  1. 值传递

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def swap(a , b) :
    # 下面代码实现a、b变量的值交换
    a, b = b, a
    print("swap函数里,a的值是", \
    a, ";b的值是", b)
    a = 6
    b = 9
    swap(a , b)
    print("交换结束后,变量a的值是", \
    a , ";变量b的值是", b)

    运行上面程序,将看到如下运行结果:

    swap函数里,a的值是 9 ;b的值是 6
    交换结束后,变量a的值是 6 ;变量b的值是 9

在这里插入图片描述

可以采用全局变量方式。在函数中定义global a, b

  1. python传入的参数在函数中发生变化,在函数外也会发生变化。看起来是引用传递,底层实现还是值传递。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def test(S, x):
    for i in range(x):
    for j in range(3):
    if S[i][j] > 0:
    S[i][j] = 1
    else:
    S[i][j] = 0

    s = np.array([[1,0,1],[1,1,2]])
    test(s, 2)
    print(s)
    结果:

    [[1 0 1]
    [1 1 1]]