python 中的值传递和引用传递

python中的参数传递和java等其他语言实现有点区别,python中对象有两种,不可变对象(基本类型,int,string,布尔等),对于这一部分的对象作为参数传递时,是值传递,在函数里面值修改了,外面不影响;另外一种可变对象(字典,列表,集合),对于这样的对象作为参数传递时,是引用传递,在内部函数修改了值,外面的值也会变化。

1、值传递,如:

def add(a):

      a = 2

a = 1 

print(a)

add(a)

print(a)

这里两个a打印的值都会是2

2、引用传递,如:

def change_dict(args)

      args['b'] = "myname"

mydict = {

"a": 2,

"b": "name"

}

print(mydict)

change_dict(mydict)

print(mydict)

这里的第一个打印和第二个打印就会不一样。

但是,往往会出现一种情况,就是我们不希望里面函数对对象操作了什么导致函数外部页跟着变,因为我们不清楚函数内部会做什么修改,因此,我暂时找了一个傻瓜方法,

在调用前先深拷贝一份数据(深拷贝,会完全复制一份一样的数据,浅拷贝,只是复制了地址),python的copy模块提供了一个方法深拷贝用法如下:

import copy 

copydict = copy.deepcopy(mydict)

 

以上就是我对python参数传递的理解,希望大家指导

你可能感兴趣的:(python)