浅谈python字符串存储形式

http://blog.csdn.net/zhonghuan1992

钟桓

2014年8月31日

浅谈python字符串存储形式

记录一下自己今的天发现疑问并且给出自己现有知识有的回答。长话短说,用过python的人对于 == 和 is 应该不陌生,但是这里我还是介绍一下。

==是用来判断两个东西是否相等,比如:

a = 10;
b = 10;
print(a == b);

输出是true;

再看一个例子:

a = [1,2,3];
b = [1,2,3];
c = [1,2,4];
print(a==b);
print(a==c);

输出分别是 true 和 false ;

再来看 is ;是用来判断同一性而不是相同性。

来看下面的例子:

x = [1,2,3];
y = [1,2,3];
print(x is y);

输出是 false;

而只有:

x = [1,2];
y = x;
print(x is y);

输出是true;

从上面的例子中可以看出 == 和 is 两个的区别之处。

现在疑问来了,我们把对比的东西换成是字符串的话,结果是否会出乎你意料。看下面的例子:

x = “huan”;
y = x;
print(x == y);
print(x is y);

我想大家能够猜出输出什么。

输出是:true

true

现在看下面的例子:

x = “huan”;
x = “huan”;
print(x == y);
print(x is y);

大家猜,结果是什么?

输出是:true

true

为什么会这样呢?x 和  y 相等可以理解,可是为什么x和y是同一个对象?据我猜测,python内部存储字符串,采用的是享元模式(Flyweight
pattern)
, 什么是享元模式,可以看我前些日子写的一篇blog,http://blog.csdn.net/zhonghuan1992/article/details/38856591,这是我目前的理解,如果各位有其它见解,请留下你的见解我们讨论一下。

时间: 2024-08-24 04:07:14

浅谈python字符串存储形式的相关文章

开发技术--浅谈Python函数

开发|浅谈Python函数 函数在实际使用中有很多不一样的小九九,我将从最基础的函数内容,延伸出函数的高级用法.此文非科普片~~ 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力求不含任何的自我感情色彩. 情感:用我自己的方式,解读知识点.力求通俗易懂,完美透析知识. 正文 首先介绍函数是什么,接着走进函数,并且发现函数的高级使用方法,最后列出常用的Python的内置函数. 函数是什么? 1.函数,在代码执行的是不执行,只有在调用函数的时候才会执行. 2.函数使用

开发技术--浅谈python数据类型

开发|浅谈python数据类型 在回顾Python基础的时候,遇到最大的问题就是内容很多,而我的目的是回顾自己之前学习的内容,进行相应的总结,所以我就不玩基础了,很多在我实际生活中使用的东西,我会在文章中提一下.并且我自己会根据这些内容进行相应的补充与扩展. 文章定位:不是科普文,是自己对于自己学习的总结. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力求不含任何的自我感情色彩. 情感:用我自己的方式,解读知识点.力求通俗易懂,完美透析知识. 正文 正文的主要内

浅谈 Python 程序和 C 程序的整合

源地址:http://www.ibm.com/developerworks/cn/linux/l-cn-pythonandc/ 概览 Python 是一种用于快速开发软件的编程语言,它的语法比较简单,易于掌握,但存在执行速度慢的问题,并且在处理某些问题时存在不足,如对计算机硬件系统的访问,对媒体文件的访问等.而作为软件开发的传统编程语言—— C 语言,却能在这些问题上很好地弥补 Python 语言的不足.因此,本文通过实例研究如何在 Python 程序中整合既有的 C 语言模块,包括用 C 语言

浅谈 js 字符串 trim 方法之正则篇

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

浅谈 Python 的 with 语句

浅谈 Python 的 with 语句 王 生辉 和 李 骅宸2011 年 12 月 02 日发布 WeiboGoogle+用电子邮件发送本页面 3 引言 with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用),从 2.6 版本开始缺省可用(参考 What's new in Python 2.6? 中 with 语句相关部分介绍).with 语句适用于对资源

浅谈 js 字符串 search 方法

原文:浅谈 js 字符串 search 方法 这是一个很久以前的事情了,好像是安心兄弟在学习js的时候做的练习.具体记不清了,今天就来简单分析下 search 究竟是什么用的. 从字面意思理解,一个是搜索字符串吧. var str = "123456789abcde"; console.log( str.search("abc") ); // 9 确实是搜索指定字符在一个字符串中出现的位置,如果不存在就返回 -1可是这样就跟 indexOf 功能一样了,何必单独搞一

浅谈 Python 的模块导入

浅谈 Python 的模块导入 本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句相关的概念.通常,导入模块都是使用如下语句: import ... import ... as ... from ... import ... from ... import ... as ... 一般情况下,使用以上语句导入模块已经够用的.但是在一些特殊场景中,可能还需要其他的导入方式.例如 Python 还提供了 __import__ 内建函数和 importlib 模块来实现动

浅谈Python Web的五大框架

说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界.各种micro-framework.framework不可胜数. 尽管还有一大脚本语言PHP也有不少框架,但远没有Python这么夸张,也正是由于Python Web Framework(Python Web开发框架,以下简称Python框架)太多.所以在Python社区总有关于Python框架孰优孰劣的话题,讨论的时间跨度甚至长达3-5年. Python这么多框架,能挨个玩个遍的人不多,坦白

浅谈Python(二)

一.Python算术运算符 以下假设变量a为10,变量b为21: 运算符 描述 实例 + 加 -- 两个对象相加 a + b 输出结果 31 - 减 -- 得到负数或是一个数减去另一个数 a - b 输出结果 -11 * 乘 -- 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 210 / 除 -- x 除以 y b / a 输出结果 2.1 % 取模 -- 返回除法的余数 b % a 输出结果 1,a%b输出结果10 ** 幂 -- 返回x的y次幂 a**b 为10的21次方