python 中的值传递和引用传递

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

1、值传递,如:

def add(a):

      a = 2

a = 1 

print(a)

add(a)

print(a)

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

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参数传递的理解,希望大家指导

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值