(python)对象的引用
对比下列两个例子:
例子1:
a=10
b=a
a=a+2
print "a=",a,"b=",b
结果:a= 12 b= 10
a+2后,b仍然是10
例子2:
aa=[1,2,4]
bb=aa
aa.append(3)
print "aa=",aa,"bb=",bb
结果:aa= [1, 2, 4, 3] bb= [1, 2, 4, 3]
aa增加一个元素3后,bb也增加了元素3
例子1和例子2为什么会出现两种不同情况呢?
我们再用id()函数打印出变量a、b、aa、bb的内存地址:
例子1:
a=10
b=a
print id(a)
print id(b)
a=a+2
print "a=",a,"b=",b
print id(a)
print id(b)
结果:
31815632
31815632
a= 12 b= 10
31815584
31815632
说明a、b两个变量一开始指向的是同一个内存地址。而a=a+2后,a变量便不再是之前的那个a变量,而指向了另一个内存地址。但b变量还是之前的那个a变量。
例子2:
aa=[1,2,4]
bb=aa
print id(aa)
print id(bb)
aa.append(3)
print "aa=",aa,"bb=",bb
print id(aa)
print id(bb)
结果:
38994120
38994120
aa= [1, 2, 4, 3] bb= [1, 2, 4, 3]
38994120
38994120
刚开始aa、bb指向的是同一个内存地址。aa.append(3)后,aa和bb仍然指向的是同一个内存地址,所以aa增加一个元素后,bb也跟着增加了一个元素
(python)对象的引用的更多相关文章
- Python 对象的引用计数和拷贝
Python 对象的引用计数和拷贝 Python是一种面向对象的语言,包括变量.函数.类.模块等等一切皆对象. 在python中,每个对象有以下三个属性: 1.id,每个对象都有一个唯一的身份标识自己 ...
- python对象、引用
1.python对象 python中 所有的python对象都有3个特征: 身份,类型和值 身份: 每个对象有一个唯一的身份标识自己,这个值可以被认为是该对象内存地址.id()查看. 类型 type( ...
- Python对象的引用、可变性和垃圾回收
1.标识.相等性和别名 别名的例子 >>> charles = {'name': 'Charles L. Dodgson', 'born': 1832} >>> l ...
- python对象的引用
1 利用 * 星号生成二维及二维以上的list时,特别要注意有的量引用是相同的.如果后面要给list赋值,最好不要这样生成list. 可以先这样生成,再打印输出后,粘贴到程序中重新赋值. a = [[ ...
- Python对象的循环引用问题
目录 Python对象循环引用 循环引用垃圾回收算法 容器对象 生成容器对象 追踪容器对象 结束追踪容器对象 分代容器对象链表 何时执行循环引用垃圾回收 循环引用的垃圾回收 循环引用中的终结器 pyt ...
- Python基础一. 简介、变量、对象及引用
一.Python简介 Python是一门计算机编程语言,它是由荷兰人Guido van Rossum在1989年圣诞节期间为了打发无聊的圣诞节而编写的,作为ABC语言的继承 特性: 面向对象.解释型. ...
- python学习笔记4(对象/引用;多范式; 上下文管理器)
### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象 21. 动态类型:对象/引用 对象和引用: 对象是储存在内存中的实体,对象名只是指向这一对象的引用(refere ...
- 非常易于理解‘类'与'对象’ 间 属性 引用关系,暨《Python 中的引用和类属性的初步理解》读后感
关键字:名称,名称空间,引用,指针,指针类型的指针(即指向指针的指针) 我读完后的理解总结: 1. 我们知道,python中的变量的赋值操作,变量其实就是一个名称name,赋值就是将name引用到一个 ...
- python中的引用传递,可变对象,不可变对象,list注意点
python中的引用传递 首先必须理解的是,python中一切的传递都是引用(地址),无论是赋值还是函数调用,不存在值传递. 可变对象和不可变对象 python变量保存的是对象的引用,这个引用指向堆内 ...
- python参数传递:对象的引用
大家都知道在python中,一切皆对象,变量也不再具有类型,变量仅仅是对象的一个引用,我们通常用变量来测类型,通常测得就是被这个变量引用得对象的类型. python采用的是传递对象的引用,为了方便说明 ...
随机推荐
- Nginx ssl证书部署
查看当前安装的OpenSSL版本所支持的密码列表,可以使用下列命令:openssl ciphers 苹果ATS检测:https://www.qcloud.com/product/ssl 刚开始&quo ...
- 并发编程中.net与java的一些对比
Java在并发编程中进行使用java.util.concurrent.atomic来处理一些轻量级变量 如AtomicInteger AtomicBoolean等 .Net中则使用Interlocke ...
- sql 2012 操作EXCEL 2013
确认是否有Microsoft.ACE.OLEDB.12.0数据接口 --进行配置: EXEC sp_configure 'show advanced options', 1 GO RECONFIGUR ...
- google垂直搜索结果
佰年金融 所谓“垂直”很干净地分离出来,而不是在谷歌算作有机列表的结果,但该行已开始模糊.例如,现在许多视频结果似乎是直接整合为有机(万SERP的例子).我治疗的新的“有深度的文章”作为一个垂直的结果 ...
- Java面试宝典答案详解与感悟(第一天)
一.Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法,虚拟机方面的语法. 1.一个".java&quo ...
- 力软信息化系统快速开发框架 web端+winform端
力软信息化系统快速开发框架是一套集权限管理+快速开发+动态接口+通用组件+动态UI于一体的全新.net信息化快速开发框架.力软信息化系统快速开发框架的使用,大大地缩短了开发周期,提高了软件质量,同时也 ...
- [原创.数据可视化系列之五]韩国"萨德"系统防御图
自从7月8日美国和韩国共同宣布将在韩国部署萨德反导系统后,韩国国内对此事的巨大争议以及本地区一些国家的强烈不满情绪在持续发酵.“萨德”(THAAD)全称“末段高空区域防御系统”,是美国导弹防御局和美国 ...
- afnetworking报错pointer being freed was not allocated
报错内容 YangTao(57008,0x7000002a0000) malloc: *** error for object 0x6180000d6490: pointer being freed ...
- jq 和 原生js进行传输文件ajax请求
<body> <input id="file_upload" name="file_upload" type="file" ...
- JAVA流程控制
JAVA流程控制 example1: --输出九九乘法表 public class chengfabiao { public static void main (String[] args){ ...