Python的参数传递

本文深入探讨Python的参数传递机制,解释了可变类型(如list)与不可变类型(如String)在方法中的行为差异。通过实例展示了如何在方法中改变并保存参数的变化,包括返回操作结果和使用可变类型作为包装器。
摘要由CSDN通过智能技术生成

Python的参数传递概述

根据Python的官方文档,Python中的参数传递机制是所谓的pass by assignment。理解这个pass by assignment需要从两个层次去考虑:
1. 被传递的参数实际上是对象的引用(但这个引用是以值的形式传递的)。
2. 有的对象是可变类型,有的对象是不可变类型。

那么:

  • 如果我们向一个方法中传递一个可变类型,该方法得到的是这个可变类型的对象的引用。我们可以在该方法中修改这个对象的内容。但是如果改变该变量所对应的引用,比如将一个新的对象赋值给该变量,在该方法之外就无法得知这种改变了。在该方法结束返回之后,方法之外的原变量所对应的仍然是原来的对象。
  • 如果我们向方法中传递了一个不可变类型,我们仍然可以重新给该变量赋值,但是方法结束之后,方法外的原变量不会有任何变化。

下面的例子清楚地说明了上面几种情况。

传递可变类型 —— 以list为例

在方法中改变参数内容

def pass_mutable_object(input_list):
    print('input list is ', input_list)
    input_list.append(4)
    print('changed input list to ', input_list)

input_list = [1, 2, 3]

print('before the function', input_list)
pass_mutable_object(input_list)
print('after the function', input_list)

上述代码的执行结果为:

before the function [1, 2, 3]
input list is [1, 2, 3]
changed input list to [1, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耀凯考前突击大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值