返回顶部
首页 > 资讯 > 后端开发 > Python >python变量赋值机制踩坑记录
  • 190
分享到

python变量赋值机制踩坑记录

2024-04-02 19:04:59 190人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1.可变类型赋值2.不可变类型赋值3.自定义类型变量赋值先说结论: 变量赋值属于浅拷贝(关于深拷贝和浅拷贝的区别可以自己了解下)。故如果是可变类型变量(如a是list类型,a=b

先说结论:

变量赋值属于浅拷贝(关于深拷贝和浅拷贝的区别可以自己了解下)。故如果是可变类型变量(如a是list类型,a=b)赋值,修改a会牵连到b;如果是不可变类型(如int)的赋值,则修改任意变量不会传递。

1. 可变类型赋值

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

2. 不可变类型赋值

对于不可变类型变量的赋值,刚开始是指向同一块地址,但修改任意变量,则修改的变量指向另外一块地址,不会影响另外一个变量。

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

3. 自定义类型变量赋值

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

但是,如果对整体变量重新赋值呢?

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

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

创建head结点的副本cur,对其进行赋值,赋值后再让它指向下一个节点,最终返回头结点,但结果出人意料。仔细分析发现,在for循环中重新对cur赋值,cur = node(i),使得cur不再指向head节点,而是指向另一块内存地址,此时headcur分路扬镳,再也没有关系了。

正确的做法是:

在for循环内,不对cur本身进行更改,只对其属性next进行更改,这样cur和head始终指向同一块地址,最终return head.next(因为第一个node没数据,真正的node从head.next开始) 

到此这篇关于python变量赋值机制踩坑记录的文章就介绍到这了,更多相关Python变量赋值踩坑记录内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python变量赋值机制踩坑记录

本文链接: https://lsjlt.com/news/139875.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python变量赋值机制踩坑记录
    目录1.可变类型赋值2.不可变类型赋值3.自定义类型变量赋值先说结论: 变量赋值属于浅拷贝(关于深拷贝和浅拷贝的区别可以自己了解下)。故如果是可变类型变量(如a是list类型,a=b...
    99+
    2024-04-02
  • python变量赋值机制实例分析
    这篇“python变量赋值机制实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python变量赋值机制实例分析”文章吧...
    99+
    2023-06-29
  • Python中的变量赋值
    目录1变量、对象、引用2对象的垃圾回收机制3变量所指向的对象不同会有何不同?引言: Python中的变量在使用中很流畅,可以不关注类型,任意赋值,对于开发来说效率得到了提升,但若不了...
    99+
    2024-04-02
  • 一次python-flask蓝图的踩坑记录
    目录一.简介二.特色三.flask规模化四. flask Blueprint总结一.简介 Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。F...
    99+
    2022-06-02
    python的flask python安装flask python flask蓝图
  • MySQL中case when对NULL值判断的踩坑记录
    目录前言Mysql中case when语法:案例实战:总结:前言 今天在开发程序中,从MySQL中提取数据的时候,使用到了case when的语法用来做判断,在使用过程中在判断NUL...
    99+
    2024-04-02
  • 2.13 Python 赋值机制
    先看一个例子: In [1]: x = [1, 2, 3] y = x x[1] = 100 print y [1, 100, 3] 改变变量x的值,变量y的值也随着改变,这与Python内部的赋值机制有关。 简单类型 先...
    99+
    2023-01-31
    赋值 机制 Python
  • 图解Python变量与赋值
    Python是一门独特的语言,与C语言有很大区别,初学Python很多萌新表示对变量与赋值不理解,学过C的都知道,给变量赋值时,需要先指定数据类型,同时会开辟一块内存区域,用于存储值,例如:int a = 1;a 就是内存空间中的一小块区域...
    99+
    2023-01-31
    赋值 变量 Python
  • python如何给变量赋值
    python可以通过基本的变量赋值、多重赋值、增量赋值、复合赋值运算符和全局变量和局部变量赋值。详细介绍:1、基本的变量赋值步骤是将数字赋给变量,将字符串赋给变量,将布尔值赋给变量,将列表赋给变量;2、多重赋值步骤是交换变量值,从函数返回多...
    99+
    2023-12-13
    python
  • Python使用ClickHouse的实践与踩坑记录
    目录1. 关于ClickHouse使用实践1.1. ClickHouse 应用于数据仓库场景1.2. 客户端工具DBeaver1.3. 大数据应用实践2. Python使用Click...
    99+
    2024-04-02
  • 【Python】记录从3.9升级到3.11踩的坑
    写在前面的话:如果想体验python3.11,不推荐生产环境升级,可以现在测试环境试试看 环境变化 原始环境 Python3.9,有挺多安装的第三方库,有自己写的类和方法,程序一切运行正常 升级...
    99+
    2023-09-21
    pandas python3.11 python ddddocr connectorx
  • python中mediapipe库踩过的坑实战记录
    目录bug1解决(1):解决(2):bug2bug3总结bug1 无法正常使用cmd或pycharm正常安装,报错截图如下: 解决(1):  这种情况下,我们就不能使用c...
    99+
    2023-05-14
    python mediapipe库 mediapipe教程 mediapipe详解
  • Python中的变量怎么赋值
    这篇文章主要讲解了“Python中的变量怎么赋值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的变量怎么赋值”吧!1 Python变量概述变量,英文叫做 variable。在《...
    99+
    2023-06-22
  • python变量和变量赋值的几种形式
    动态类型的语言 python是动态类型的语言,不需要声明变量的类型。 实际上,python中的变量仅仅只是用来保存一个数据对象的地址。无论是什么数据对象,在内存中创建好数据对象之后,都只是把它的地址保存到变量名中。所以变量名是类型无关的...
    99+
    2023-01-30
    变量 赋值 几种
  • linux怎么给变量随机赋值
    在Linux中,可以使用shell脚本来给变量随机赋值。可以使用`$RANDOM`变量来生成一个随机数,并将其赋值给需要的变量。以下...
    99+
    2023-08-23
    linux
  • python变量赋值规范是什么
    Python变量赋值的规范主要有以下几点:1. 变量名只能包含字母、数字和下划线,且不能以数字开头。2. 变量名不能包含空格和特殊字...
    99+
    2023-09-05
    python
  • python中变量的声明和赋值
    1、什么是变量?    变量:值会发生变化的的量,与常量相对.2、python支持的变量数据类型:    Python有五个标准的数据类型:1. 数字    2.字符串    3.元组    4.列表    5.字典3、python中的变...
    99+
    2023-01-31
    赋值 变量 声明
  • 微信小程序获取手机号的踩坑记录
    前言 最近在开发小程序遇到这样一个问题, 在用户点击授权后去解密手机号时会出现第一次失败,第二次成功的情况。研究了一段时间,终于找到比较合理的解决方案,在此记录并总结一下,希望可以帮...
    99+
    2024-04-02
  • python批量创建变量并赋值操作
    一,简单的情况: 核心是exec函数,exec函数可以执行我们输入的代码字符串。exec函数的简单例子: exec ('print "hello world"') hello w...
    99+
    2024-04-02
  • python的变量与赋值详细分析
    python的变量与赋值 1.变量的命名规则 变量其实通过一个标记调用内存中的值,而变量名就是这个标记的名称,但是万一这个标记已经被提前占用或者解释器认为这个标记是不合法的,那么就会报错。下面总结了一下变...
    99+
    2022-06-04
    赋值 变量 详细
  • python 如何将函数赋值给变量
    在python中使用sys模块将函数赋值给变量,具体方法如下:首先,自定义一个函数;def run(name): list1 = 'hello ' + namereturn list1函数自定义好后,使用sys模块将函数赋值给变量;impo...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作