Python中的对象包含三要素:id、type、value
id:用来唯一标识一个对象;

type:标识对象的类型;

value是对象的值。

==是判断对象的值是否相等,也就是value,is是判断对象是否就是本身,也就是id。

 a = 'abc'
 b = 'abc'
 print a==b,a is b

 #打印结果:True,True

上面的a和b指向的应该不是同一个对象,为什么a is b打印的True呢!经过搜索,原来“在Python内部暂时储存并重复使用短字符串作为最佳化,实际上内存里只有一个字符串供a,b两个共享引用”,所以a is b打印的是True,下面就验证一下:

 c = 'a'*255
 d = 'a'*255
 print a == b, a is b

 #打印结果:True, False

上面c和d都是等于255个a的长字符串,都是指向不同的对象,打印a is b为False,也就验证了“在Python内部暂时储存并重复使用短字符串作为最佳化,实际上内存里只有一个字符串供a,b两个共享引用”这句话。接着,可以看一下a,b,c,d的id:

print id(a), id(b)
print id(c), id(d)

#打印结果:34220632, 34220632
#         33885504, 33885224

可以看到,a和b指向的是不同对象,但由于Python内部暂时存储并重复使用短字符串为最佳化,所以id是一样的,也就是a is b为True,而c和d指向的对象为长字符串,所以id就符合c和d指向为不同对象,为False。

随机推荐

  1. -_-#【Angular】自定义过滤器

    AngularJS学习笔记 <!DOCTYPE html> <html ng-app="Demo"> <head> <meta chars ...

  2. (转载)PHP使用header函数设置HTTP头的示例方法表头

    (转载)http://justcoding.iteye.com/blog/601117/ 代码: //定义编码 header( 'Content-Type:text/html;charset=utf- ...

  3. Delphi TcxTreeList 怎们显示下拉列表

    TcxTreeList  怎们显示下拉列表, 操作如下: 1.定义一个TStringlist中存储你的信息. 2.然后选定在TcxTreeList的哪个列要变成TCombobox,  如下图: 3. ...

  4. Android新浪微博客户端(七)——ListView中的图片异步加载、缓存

    原文出自:方杰|http://fangjie.info/?p=193转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54 该项目代码已经放到git ...

  5. call-template和apply-templates

    对xml模板 来说,name属性是很关键的 call-template /apply-template 的name必须要和模板的name相对应.模板相当于一个函数,可以暂时这么看.而name相当于函数 ...

  6. jquery实现停留半秒后再选择

    jquery实现tab停留半秒后,选中菜单.切换tab下的内容: var showHandler=null; function init(){ $("#tab_ul").find( ...

  7. 转:jQuery LigerUI 使用教程表格篇(3) 复选框、多表头、分组、汇总和明细

    阅读目录 复选框 多表头 分组 汇总 明细 复选框 grid可以设置复选框模式进行多选,只需要简单的配置 checked:true 获取选中行 如果要获取选中的行,可以用getSelecteds方法: ...

  8. 跟Google学习Android开发-起始篇-用碎片构建一个动态的用户界面(3)

    4.3 构建一个灵活的用户界面 当设计你的应用程序要支持大范围的屏幕尺寸时,你可以在不同的布局配置中重用碎片,来根据可用的屏幕空间优化用户体验. 例如,在手持设备上,它可能是适应来在一个单窗格用户界面 ...

  9. ViewPager 详解(四)----自主实现滑动指示条

    前言:前面我们用了三篇的时间讲述了有关ViewPager的基础知识,到这篇就要进入点实际的了.在第三篇<ViewPager 详解(三)---PagerTabStrip与PagerTitleStr ...

  10. 海尔的U+智慧生活操作系统

    通过一个手机APP就能操控家庭内的不同品牌的家电家居设备.在连接Wifi的状态下,海尔智能路由器能够自动连接上家庭里的智能冰箱.智能洗衣机.智能空调.智能烤箱.空气盒子等设备端.在智能手机上下载海尔U ...