python 中的变量赋值和 swap(a, b)

    python 中为什么不需要 swap() 函数,而只需要执行:

    a, b = b, a

    就可以交换 a,b 的值呢?

    这是因为在 python 中,变量所指向的都是一个对象,以引用的方式来使用对象。

    以 a = 1 为例,python 中首先给 “1”分配一个地址,然后把 “1”放进去,即在“地址 1 ”中放入“1”,然后让 a 指向这个地址(a 也就是 C++ 中的指针)。

    这时候,如果我们再定义一个 b = 1 ? 

    因为 "1" 已经存放到“地址 1”中了,所以直接可以让 b 指向“地址 1 ”就可以了。

    我们以一段代码来表示这个过程:

a = 1
b = 1
print(id(a), id(b)) # id(a)输出 a 所指向的地址

    输出:

    1727058992 1727058992

    具体值可能不同,但两个值一定相同,也就是说明了 a, b 其实是指向了同一个地址中的 value。


    下面说明 a, b = b, a 的实现。

    首先来段代码:

a = 1
b = 2
print(id(a), id(b)) # id(a)输出 a 所指向的地址
a, b = b, a
print(id(a), id(b))

    输出:

    1727058992 1727059008
    1727059008 1727058992

    a 指向“地址1",b指向 "地址2”,执行 a, b = b, a 时,其实只是交换了这两个指针所指向的地址,并没有对具体的 value 的改变,所以不需要 swap() 函数,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值