`

Python基础:Python可变对象和不可变对象

 
阅读更多

Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如list。而不可变的对象则相反,表示其内容不可变。

  • 不可变对象:int,string,float,tuple
  • 可变对象   :list,dictionary

一、不可变对象

由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的。运用这样的机制,有时候会让人产生糊涂,似乎可变对象变化了。如下面的代码:

i = 73
i += 2


 

 

从上面得知,不可变的对象的特征没有变,依然是不可变对象,变的只是创建了新对象,改变了变量的对象引用。

看看下面的代码,更能体现这点的。

 

#因为258是int对象,是不可变对象的。所以下面3个id的值都是一样的,最后一句的结果也是为True
#有点奇怪的是为什么在IDLE,和在脚本执行的结果不太一样。所以下面的代码请在脚本中执行。

print(id(258))
a = 258
print(id(a))
b = 258
print(id(b))
print(a is b)

 

 

 

 

二、对于可变对象

其对象的内容是可以变化的。当对象的内容发生变化时,变量的对象引用是不会变化的。如下面的例子。

m=[5,9]
m+=[6]

 

 


  • 大小: 104.4 KB
  • 大小: 185.1 KB
分享到:
评论

相关推荐

    Python可变对象与不可变对象

    Python里和None比较时,为什么是 is None 而不是 == None 呢?...这是因为None在Python里是个单例对象,一个变量如果是None,它一定和None指向同一个内存地址。而 == None背后调用的是__eq__,而__eq__可以被重载

    详细分析Python可变对象和不可变对象

    在 Python 中一切都可以看作为对象。每个对象都有各自的 id, type 和 value。 id: 当一个对象被创建后,它的 id 就不会在改变,这里...常见的不可变对象(immutable objects): Number: int, float, complex string t

    浅谈Python中的可变对象和不可变对象

    Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型。 还是看代码比较直观。先看不可变对象 不可变对象的例子 先说明一点is 就是判断两

    python学习笔记:python中的可变对象与不可变对象

    1. 什么是对象:python中一切皆为对象!—PPT 程序运行当中,所有数据都是储存到内存当中再运行的。 对象就是内存中专门用来存储数据的一块区域。 对象实际上就是一个容器,专门用来存储各种数据.(比如:数值、字符...

    Python可变对象与不可变对象原理解析

    如果函数收到的是一个不可变对象的引用,就不能直接修改原始对象——相当于通过“传值’来传递对象。 2. 当人们复制可变对象时,就复制了可变对象的引用,如果改变引用的值,则修改了原始的参数。 3. 为了简化内存...

    浅谈Python中的可变与不可变数据类型.pdf

    浅谈Python中的可变与不可变数据类型.pdf

    Python程序基础:Python中的变量.pptx

    Python中的变量 2.1.1 变量的命名 变量名只能包括字母、数字和下划线,且第一个字符必须是字母或下划线,不能是...可在Python交互模式下执行如下命令,查看关键字。 1.数字 十进制整数,如18。 八进制整数。以数字0

    Python基础教程:字典和Json.pdf

    Python基础教程:字典和Json 字典是键/值对构成的集合,字典通过⼤括号来创建,字典的键是字符串,⽽值可以是任何数据对象。 字典有两个重要的特征: 字典是⽆序的,字典项没有特定的顺序,只能通过键来获取值; ...

    python变量赋值方法(可变与不可变)

    Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变。 不可变(immutable):int、字符串(string)、float、(数值型number)、元组...

    python 零基础学习篇Python基础语法20 可变和不可变类型 .mp4

    python 零基础学习篇

    Python 076.参数的传递_不可变对象含可变子对象_内存分析.mp4

    Python 076.参数的传递_不可变对象含可变子对象_内存分析.mp4

    Python基础教程:函数参数和注解.pdf

    Python基础教程:函数参数和注解 四种参数 Python函数func定义如下: def func(first, *args, second="Hello World", **kwargs): print(first) print(args) print(second) print(kwargs) func("lisi", "san", py=...

    Python-immutables一个Python的高性能不可变映射类型

    immutables 一个Python的高性能不可变映射类型

    Python基础教程:括号()详解.pdf

    1、python中的⼩括号() 代表tuple元组数据类型,元组是⼀种不可变序列。创建⽅法很简单,⼤多时候都是⽤⼩括号括起来的。 >>> tup = (1,2,3) >>> tup (1,2,3) >>> >>>()#空元组 () >>> >>>55,#—个值的元组 (55,) 2...

    Python 可变类型和不可变类型-列表、字典的修改和赋值

    Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和...

    Python语言基础:元组.pptx

    元组和列表操作类似,但是元组属于不可变序列,元组创建后只可以元素覆盖不可以修改元素。元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号“( )”中,用逗号“,”分隔元素值。 元组 实例:体会元组中的...

    Python程序基础:字典和集合综合案例.pptx

    不能是列表、字典和集合等可变数据类型;创建集合的方式很简单,只需将逗号分隔的不同元素使用大括号括起来即可。由于集合元素是无序的,集合的打印效果与定义顺序可以不一致,且由于集合元素独一无二,使用集合类型...

Global site tag (gtag.js) - Google Analytics