python函数传递列表_python函数的参数传递

1、准确地说,Python 的参数传递是赋值传递(pass by assignment),或者叫作对象的引用传递(pass by object reference)。Python 里所有的数据类型都是对象,所以参数传递时,只是让新变量与原变量指向相同的对象而已,并不存在值传递或是引用传递一说。

def my_func(b):

b = 2

a =1

my_func(a)

print(a)

-----

1

这里的参数传递,使变量 a 和 b 同时指向了 1 这个对象。但当我们执行到 b = 2 时,系统会重新创建一个值为 2 的新对象,并让 b 指向它;而 a 仍然指向 1 这个对象。所以,a 的值不变,仍然为 1。

2、我们只需稍作改变,让函数返回新变量,赋给 a。这样,a 就指向了一个新的值为 2 的对象,a 的值也因此变为 2。

def my_func2(b):

b = 2

return b

a = 1

a = my_func2(a)

a

2

3、 不过,当可变对象当作参数传入函数里的时候,改变可变对象的值,就会影响所有指向它的变量。比如下面的例子:

def my_func3(l2):

l2.append(4)

l1 = [1, 2, 3]

my_func3(l1)

l1

[1, 2, 3, 4]

这里 l1 和 l2 先是同时指向值为 [1, 2, 3]

你可能感兴趣的:(python函数传递列表)