Python中的参数传递机制

前言

Python中的函数参数传递机制都是 “值传递”。值传递就是指将实际的参数对象复制一份传入,从而可使参数本身不受影响

正文:

def swap(a, b):
    # 实现a,b的交换
    a, b = b, a
    print("a的值为:", a, 'b的值为:', b)
a = 1
b = 2
swap(a, b)
print('a为', a, 'b为', b)

运行结果
当在主程序中调用swap()函数时,系统分别为主程序和swap()函数分配两块栈区,用于保存他们的局部变量。将主程序中的a、b变量的值分别赋值给swap()函数栈区中的a、b参数。此时,系统存在两个a变量,b比变量,只是存在的栈区不同。由此程序可知,Python只是把a, b的值传入进去,并未对a,b的值进行真正的修改,就相当于把a,b复制了一份,然后传入了swap函数,该复制品只在swap函数体内有效。这就是值传递的实质当系统开始执行函数时,系统对形参执行初始化,就是把实参变量的值付给函数的形参变量
若想通过函数来修改传入参数的值,则可以把这些数据包装成列表或者字典等可变对象再传入函数中
例如:

def test(nums):
    a = nums[0]
    nums[0] = nums[1]
    nums[1] = a
my_list = [1, 2, 3, 4, 5]
test(my_list)
print(my_list)

在这里插入图片描述
此时,成功实现了对传入参数的修改,但值得注意的是,此时不是把my_list对象直接传进去!系统还是创建了一个变量,不过这是一个引用变量(也就是一个指针)当需要使用my_list时,通过该引用变量,寻找到my_list的地址,从而进行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值