Python 引用 赋值

1)a是引用,指向(标注)一段连续的内存区域,内容是 1,2

b是引用,指向一段连续的内存区域,内容是另一个引用。后者指向当时a所指向的东西,也就是那块内容为1,2的内存区域。

a被重定向,指向另一个内存区域,内容是4,5

2)a是引用,指向(标注)一段连续的内存区域,内容是 1,2

  b是引用,指向一段连续的内存区域,内容是另一个引用。后者指向当时a所指向的东西,也就是那块内容为1,2的内存区域。

a所指向的内存区域的某一块内容被改变(  a[ 1 ]=7  )

由于b内存放的这个引用,跟a指向的是同一块,因此b内的引用所指向的内容也被改变

3)str是不可变类型,就像 int, float 那样。str是被保存为数组的形式,因此可以切片,像myStr[1:5], myStr[3]这样。但是不可以部分赋值:myStr[2]=‘4‘。

如果改变其内容,会重新分配内存( 考虑效率问题 ):

另一方面,像数组这样的可变类型,改变其内容是不会重新分配内存的:

当然,如果是要重新赋值,肯定会重新分配内存:

时间: 2024-10-16 00:32:12

Python 引用 赋值的相关文章

python如何实现类似php的引用赋值

直接放代码,有注释,就不解析了 1 # ############################ 2 # 改变一个变量的值,与之有关系的变量的值也会相等变化 3 # 类似php的引用赋值,宏观来看 4 # ############################ 5 6 relation = [] # relation是装在有关系的集合的列表 7 8 9 # 绑定有关系的变量 10 def bind(*arg): 11 if len(arg) < 2: 12 ''' 13 判断绑定变量的个数 1

Python引用复制,参数传递,弱引用与垃圾回收

引用 先上个示例: >>> val = [1] >>> val[0] = val >>> val [[...]] 上述代码使val中包含自身,而产生了无限递归.上述示例表明Python中的变量名为引用类型,赋值只是使得左值指向与右值相同的内存对象. is运算符可以判断两个引用是否指向了同一个对象,而==运算符判断两个引用指向的值是否相等而不关心指向什么对象. 对引用不了解的朋友,可以把Python引用与C/C++中的void *类比,不过因为垃圾回收机

python 引用和对象理解

今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象分离 更为贴切) 从最开始的变量开始思考: 在python中,如果要使用一个变量,不需要提前进行声明,只需要在用的时候,给这个变量赋值即可 (这个和C语言等静态类型语言不同,和python为动态类型有关). 举第一个栗子: a = 1 这是一个简单的赋值语句,整数 1 为一个对象,a 是一个引用,利

Python&lt;5&gt;赋值、表达式、打印语句

赋值语句 绝大多数的赋值语句都很简单,但有些特性要专门记住: <1>赋值语句建立对象引用值 Python赋值语句会把对象引用值存储在变量名或者数据结构的元素内.赋值语句总是建立对象的引用值,而不是 复制对象,因此Python变量更像是指针,而不是数据存储区域. <2>变量名会在首次赋值时被创建 一旦赋值了,每当这个变量名出现在表达式时就会被其所引用的值取代. <3>变量名在引用前必须先赋值 否则可能发生异常 <4>执行隐式赋值时的一些操作 所有的赋值环境都是

python 之 赋值和拷贝(你真的了解吗)

现象:先上一段代码. >>> import copy >>> a = [1,2,3,4,['a','b']] >>> b = a >>> c = copy.copy(a) >>> d = copy.deepcopy(a) >>> a.append(5) >>> print(a) [1, 2, 3, 4, ['a', 'b'], 5] >>> print(b) [1

python变量赋值的几种形式细节

变量赋值的几种形式细节 本文解释python中变量赋值的形式,并解释一些细节.后面还有一篇文章解释python中按引用赋值的文章. python中变量赋值的几种形式. x = "long" # (1).基本形式 x, y = "long", "shuai" # (2).元组对应赋值 [x, y] = ["long", "shuai"] # (3).列表对应赋值 a, b, c, d = "long

Python学习教程:Python列表赋值,复制,深拷贝及5种浅拷贝详解

Python学习教程:Python列表赋值,复制,深拷贝及5种浅拷贝详解 概述 在列表复制这个问题,看似简单的复制却有着许多的学问,尤其是对新手来说,理所当然的事情却并不如意,比如列表的赋值.复制.浅拷贝.深拷贝等绕口的名词到底有什么区别和作用呢? 列表赋值 # 定义一个新列表l1 = [1, 2, 3, 4, 5]# 对l2赋值l2 = l1print(l1)l2[0] = 100print(l1) 示例结果: [1, 2, 3, 4, 5][100, 2, 3, 4, 5] 可以看到,更改赋

总结:Python的赋值、深拷贝、浅拷贝有什么区别

自我总结: 1)赋值:对象赋值实际上是对象的引用. 在Python中,变量就是地址的一种表示形式,并不开辟开辟存储空间. 2)浅拷贝:只拷贝了顶层(第一层),没有拷贝子对象.所以子对象的原始数据改变,子对象会改变. 3)深拷贝:区别于浅拷贝只拷贝顶层引用,深拷贝会逐层进行拷贝,直到拷贝的所有引用都是不可变引用为止. 为什么Python默认的拷贝方式是浅拷贝? 时间角度:浅拷贝花费时间更少: 空间角度:浅拷贝花费内存更少: 效率角度:浅拷贝只拷贝顶层数据,一般情况下比深拷贝效率高. 1.pytho

Python 直接赋值、浅拷贝和深度拷贝区别

Python 直接赋值.浅拷贝和深度拷贝区别 转自https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html 直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象. 解析 1.b = a: 赋值引用,a 和 b 都指向同一个对象. # -*- c