python中变量赋值语句例子,在python中赋值

  python中变量赋值语句例子,在python中赋值

  本文主要介绍python的变量赋值机制,践踏记录。我们都知道python有深拷贝和浅拷贝,但是变量赋值机制是什么?这是一个容易被忽视却又容易被践踏的点。大家了解一下,有需要的朋友可以参考一下。

  00-1010 1.变量类型赋值2。不变类型赋值3。自定义类型变量赋值先说结论:

  变量赋值属于轻拷贝(你可以自己知道深度拷贝和轻拷贝的区别)。所以如果是变量类型的变量(比如A是列表类型,a=b),修改A会牵连B;如果是不可变类型(比如int)的赋值,修改任何变量都不会被传递。

  

目录

 

  可以看出,对于变量类型赋值,变量总是指向同一个块地址。

  

1. 可变类型赋值

 

  对于不可变变量的赋值,一开始是指向同一个地址,但是如果修改了任何一个变量,修改后的变量指向另一个地址,不会影响另一个变量。

  那么问题来了,自定义类型的变量赋值属于哪一种?

  

2. 不可变类型赋值

 

  可以看出,修改自定义变量中的属性也会被传递。

  但是,如果全局变量被重新分配了呢?

  可以看出,如果整个变量被重新赋值,修改不会被传递,修改后的变量会指向新的地址。

  对于自定义变量赋值的区别,如果不注意,很容易踩坑,如下面函数,将列表转化为链表:.

  创建头节点的copy cur,给它赋值,然后指向下一个节点,最后返回头节点,结果却出乎意料。仔细分析发现,在for循环中,cur被重新赋值,cur=Node(i),这样cur就不再指向头节点,而是指向另一个内存地址。此时,head和cur分道扬镳,再也没有任何瓜葛。

  正确的做法是:

  在for循环内,cur本身是不变的,只改变了它的属性next,这样cur和head总是指向同一个地址,最后返回head.next(因为第一个节点没有数据,所以真正的节点是从head.next开始的)

  关于python变量赋值机制的践踏记录这篇文章到此为止。关于python变量赋值踩踏记录的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: