`

Python引用类型和值类型的区别与使用解析

阅读更多

原文链接:http://www.pythontab.com/html/2017/pythonjichu_0714/1153.html

Python数据类型分为值类型和引用类型, 下面我们看下它们的区别:

值类型:

对象本身不允许修改,数值的修改实际上是让变量指向了一个新的对象
包含:字符串、元组、数值,本身不允许被修改

引用类型:

对象本身可以修改,
包含:列表、字典,本身允许修改

例子:

1
2
3
4
a = 11
print id(a)
a = 16
print id(a)

结果:

1
2
43525053L
57628312L

修改值类型的值,只是让它指向一个新的内存地址,并不会改变变量b的值

1
2
3
4
l = [1,2,3]
print id(l)
l[0] = 0
print id(l)

结果:

1
2
19775281L
19775281L

修改引用类型的值,因为listb的地址和lista的一致,所以也会被修改

一般只为了复制值,可以使用分片操作

1
listb = lista[:]

下面在单独看下python的值类型和引用类型

值类型:

包含:字符串、元组、数值,本身不允许被修改

引用类型:

包含:列表、字典,本身允许修改

1
2
3
a = 2
b = a
a = 3

修改值类型的值,只是让它指向一个新的内存地址,并不会改变变量b的值

1
2
3
lista = [1,2]
listb = lista
lista[0] = 3

修改引用类型的值,因为listb的地址和lista的一致,所以也会被修改

一般只为了复制值,可以使用分片操作

1
listb = lista[:]

总结

以上所述是小编给大家介绍的Python引用类型和值类型的区别与使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

 

分享到:
评论

相关推荐

    Python中 传递值 和 传递引用 的区别解析

    为变量名赋值的操作可以看做将标签贴到”值”的表面(值可以是可变类型,和不可变类型) 以链表中的节点对象为例(实例化的节点对象为不可变类型, 但对象中的属性是可变的)   链表对象 class NodeList(ob

    Python核心编程第二版

     4.6.5 Python类型操作符和内建函数总结   4.7 类型工厂函数   4.8 标准类型的分类   4.8.1 存储模型   4.8.2 更新模型   4.8.3 访问模型   4.9 不支持的类型   4.10 练习   第5章 数字 ...

    Python编程入门经典

    1.1 编程与使用计算机的区别 3 1.1.1 编程的一致性 3 1.1.2 编程的可控性 4 1.1.3 程序要应对变化 4 1.1.4 小结 4 1.2 准备工作 4 1.2.1 在非Windows系统上安装 Python 3.1 5 1.2.2 使用Python Shell 5 1.3 开始使用...

    Python核心编程第二版(ok)

     4.6.5 Python类型操作符和内建函数总结   4.7 类型工厂函数   4.8 标准类型的分类   4.8.1 存储模型   4.8.2 更新模型   4.8.3 访问模型   4.9 不支持的类型   4.10 练习   第5章 数字 ...

    Python核心编程(第二版).pdf (压缩包分2部分,第二部分)

     4.6.5 python类型操作符和内建函数总结   4.7 类型工厂函数   4.8 标准类型的分类   4.8.1 存储模型   4.8.2 更新模型   4.8.3 访问模型   4.9 不支持的类型   4.10 练习   第5章 数字 ...

    Python核心编程(第二版).pdf (压缩包分2部分,第一部分)

     4.6.5 python类型操作符和内建函数总结   4.7 类型工厂函数   4.8 标准类型的分类   4.8.1 存储模型   4.8.2 更新模型   4.8.3 访问模型   4.9 不支持的类型   4.10 练习   第5章 数字 ...

    Python Cookbook

    8.10 在Python 2.4中使用doctest和unittest 331 8.11 在单元测试中检查区间 334 第9章 进程、线程和同步 336 引言 336 9.1 同步对象中的所有方法 339 9.2 终止线程 342 9.3 将Queue.Queue用作优先级队列 344 ...

    pyhocon:适用于Python的HOCON解析器

    解析后的配置可以看作是嵌套的字典(具有自动推断的类型),可以使用普通的字典getter(例如conf['a']['b']或使用conf['a.b']等路径来访问值) conf['a.b'] ),或通过这些方法get , get_int (如果它不是一个int)...

    python cookbook(第3版)

    9.24 解析与分析Python源码 9.25 拆解Python字节码 第十章:模块与包 10.1 构建一个模块的层级包 10.2 控制模块被全部导入的内容 10.3 使用相对路径名导入包中子模块 10.4 将模块分割成多个文件 10.5 利用...

    python-3.7.0b5下載

    注释只能使用当前范围内已有的名称,换句话说,它们不支持任何类型的前向引用; 注释源代码对Python程序的启动时间有不利影响。 通过推迟注释评估可以解决这两个问题。编译器不是编译在定义时在注释中执行表达式的...

    python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)

    Python是强类型语言,无法根据上下文自动解析转换成合适的类型。 Python是一种动态语言,在程序运行过程中,同一个变量名在运行的不同阶段可以代表不同形式的值(整型,浮点,列表,元组),变量名只是各种数据及...

    dive into python

    2.2.1. Python 和其他编程语言数据类型的比较 2.3. 文档化函数 2.4. 万物皆对象 2.4.1. 模块导入的搜索路径 2.4.2. 何谓对象? 2.5. 代码缩进 2.6. 测试模块 3. 内置数据类型 3.1. Dictionary 介绍 3.1.1. ...

    精易Python支持库_P27 1.1#1205(JYEPython_P27.fne)-易语言

    安装与使用 下载后,将支持库 - 放入易语言安装目录中 目录中的两个文件夹直接覆盖到易语言安装目录中即可。 目录文件说明 支持库 - 放入易语言安装目录中 lib  易语言动态库 static_lib  易语言静态库 调用例程 ...

    Dive Into Python 中文版

    目录 第 1 章 安装 Python........................................................................................................................................7 ...4.2. 使用可选参数和命名参数 .....

    RED HAT LINUX 6大全

    本书内容翔实、涉及领域广泛,并且提供了详细的例子和大量的参考资料(包括书籍、电子文档和Internet站点),是一本学习、使用和管理Linux不可多得的好书。 目 录 译者序 前言 第一部分 Red Hat Linux的介绍与安装 ...

    freemarker总结

    options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,其中encoding指定包含页面时所用的解码集,而parse指定被包含文件是否作为FTL文件来解析,如果省略了parse选项值,则该选项默认是true. ...

    Tcl_TK编程权威指南pdf

    第10章 引用问题与eval 使用list命令来构建代码 在eval内部利用concat uplevel命令 subst命令 第11章 正则表达式 何时使用正则表达式 正则表达式的语法 高级正则表达式(are) 语法总结 regexp命令 rgsub...

Global site tag (gtag.js) - Google Analytics