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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40017590/article/details/79959962

    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() 函数,

阅读更多

没有更多推荐了,返回首页