Python引用的概念

Python中常量的概念其实是对象的概念(所谓在Python中,万物皆对象),所有的赋值操作都是变量对操作数对象的引用。在Python中,每一个变量都有一个独一无二的id,可以称之为变量地址,用id()方法查看(如图1)。其中右边的字符串可以看作为一个字符串对象,而左边为这个字符串对象的引用。我们现在通过sys.getrefcount()方法来查看第一次引用时,变量内部的引用计数器的初始值为多少(如图2)。此处需要解释一下,一般来说第一次引用它的引用计数器应为1,但此时为2(也会为3或者其他值),原因是程序在执行时可能在内部对它又进行了其他调用(此处不深究这个原因,只要知道在第一次引用的时候引用计数器所显示的值的基础上,每次多一个变量对通一个字符串对象赋值那么这个引用计数器的值就会增1(如图3))反之,执行del方法时,将会删除一个字符串对象的引用,从而该字符串对象的引用计数器也会相应的减1。(如图4)。当该字符串对象的引用计数器变为初始时减1的值时代表这个字符串变量被销毁。

图  1

图  2

图  3

图  4

原文地址:https://www.cnblogs.com/xingzherufeng/p/9248559.html

时间: 2024-10-13 16:34:30

Python引用的概念的相关文章

强、软、弱和虚引用的概念

本文介绍对象的强.软.弱和虚引用的概念.应用及其在UML中的表示. 1.对象的强.软.弱和虚引用   在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期.这4种级别由高到低依次为:强引用.软引用.弱引用和虚引用.图1为对象应用类层次. 图1 ⑴强引用(StrongReference)    强引用

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

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

引用的概念

参考地址:http://xinklabi.iteye.com/blog/653643 一.引用的概念 引用引入了对象的一个同义词.定义引用的表示方法与定义指针相似,只是用&代替了*.例如: Point pt1(10,10);Point &pt2=pt1; 定义了pt2为pt1的引用.通过这样的定义,pt1和pt2表示同一对象.需要特别强调的是引用并不产生对象的副本,仅仅是对象的同义词.因此,当下面的语句执行后:pt1.offset(2,2):pt1和pt2都具有(12,12)的值.引用必须

Python引用模块和查找模块路径

模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块):对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是.py文件可以认为是一个模块.在"模块"之上有"包",主要是

和我一起学python,基本概念 (life is short ,we need python)

作者:tobecrazy  出处:http://www.cnblogs.com/tobecrazy 欢迎转载,转载请注明出处.thank you! 基本概念 : 常量: 常量名全部大写,如PI 变量: python没有变量类型,也不必声明,直接赋值即可. 变量可以是数字,字符串,布尔值(True,Flase,注意大小写),列表,字典等类型. 如: var=1 str='hello' 变量名: 字母数字下划线,不能以数字开头.全局变量最好全部大写,一般变量注意避免保留字. 有效变量名: test1

Python入门之Python引用模块和查找模块路径

#这篇文章主要介绍了Python引用模块和Python查找模块路径的相关资料,需要的朋友可以参考下 模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块):对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是

Python 引用

python引用python中的数值类型变量也是引用,例如: a = 100b=a那么a和b指向同一块内存但是当修改a或者b的值得时候,Python会新分配一块内存来存储新的值 python中不可变类型(不支持修改)是数值类型,字符串类型,元组类型,其中数值和字符串全部都是引用,修改本质上是再开辟一块空间存放新值python中可变类型是列表和字典,在字典中,只有不可变类型才能够做key(甚至元组也可以做key) 原文地址:https://www.cnblogs.com/zhanggaofeng/

前向引用的概念

前向引用的概念很简单,简单的理解就是使用变量前要先声明,如果使用了未声明的变量,就属于前向引用. 以JavaScript写一段代码来做一个简单示例. console.log(nott); // Uncaught ReferenceError: nott1 is not defined let nott = '我还没被定义呢你就想引用我'; 这里,因为nott的定义在console.log之后,所以就会报nott未定义的错误,这就是前向引用. 另外的我们再来看一个例子. console.log(n

从python中copy与deepcopy的区别看python引用

讨论copy与deepcopy的区别这个问题要先搞清楚python中的引用.python的内存管理. python中的一切事物皆为对象,并且规定参数的传递都是对象的引用.可能这样说听起来比较难懂,对比一下PHP中的赋值和引用就有大致的概念了.参考下面一段引用: 1. python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是“传对象引用”的方式.实际上,这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当