python函数传参是值传递还是引用传递_python3函数参数 —— 值传递还是引用传递...

简介理解

大街上,有个人喊王小二,我们知道,王小二只是个名字,对应着前面某个实体人。在家里,这个实体人的妈妈可能叫这个实体人为二二,而在另外一条街上,也有个人叫王小二,对应的是另外一个实体人。

在python中,变量就对应着上面王小二这个名字,内容对象就对应着某个实体人。变量和对象绑定在一块,编程人员就可以使用变量来指代对象

所以,在两种情况下,变量指代的内容发生变化:绑定的对象本身变了;

变量绑定到另外一个对象

python中赋值符合‘=’ 就意味着绑定变量和对象

a = 1 # 变量a 绑定到 1 这个对象

b = a # 变量b 和 变量a 绑定到同一个对象 1 上

a = 1

id(a) # 结果为140725377081744

b = a

id(b) # 结果为140725377081744

情况1

a = 1 # a 绑定到 对象1 上

def abs(arg): # 运行函数时,arg和a绑定到同一个对象1上

arg = 5 # 因为实数时不可变对象,arg绑定到另一个对象5上,此时a还是绑定1

b = abs(a)

print(a) # 显示结果时1

情况二

a = [] # a 绑定到 列表对象[] 上

def abs(arg): # 运行函数时,arg和a绑定到同一个列表对象[]上

arg.append(5)# 因为列表是可变对象,arg绑定的列表对象增加了一个元素5,此时a还是绑定在这个列表对象上

b = abs(a)

print(a) # 显示结果时[5]

可变对象和不可变对象

定义:可变对象:当有需要改变对象内部的值的时候,这个对象的id不发生变化。包括字典(dict), 集合(set), 列表(list)

不可变对象:当有需要改变对象内部的值的时候,这个对象的id会发生变化。包括整数(int), 字符串(string),浮点数(float),元组(tuple)

# 可变对象

a_list = [1, 2, 3]

id(a_list) # 结果为 4522089032

a_list.append(4)

id(a_list) # 结果为 4522089032

# 不可变对象

a = 10000

id(a) # 4521119088

a = 1

id(a) # 4521119312

b = 10000

id(b) # 4521119216 这里的10000和上面的10000地址不一样

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值